Knex: ΠžΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° timestamptz?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 16 ΠΌΠ°Ρ€. 2016  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: knex/knex

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ‚Π΅Ρ… Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ timestamptz Π² составном ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ (user_id, created_at) для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов. Однако я Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° страницы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ javascript усСкаСт ΠΏΠΎΠ»Π΅ created_at Π΄ΠΎ миллисСкунд, поэтому, ΠΊΠΎΠ³Π΄Π° Π² ΠΎΠ΄Π½ΠΎΠΉ миллисСкундС создаСтся Π΄Π²Π°, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.

-- record --
id: 'c2ed61d5-ffab-4b0e-a957-c184b3f33132',
created_at: '2016-02-02 15:46:17.681601-05'

                           precise ^

Π‘ запросом knex:

knex("series").where("created_at", ">", last.created_at).toString()
select * from series
where created_at > '2016-02-02T15:46:17.681-05:00'

                               truncated ^
discussion question

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@ aj0strow Π’Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ knex ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ timestamp Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Javascript Date ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ строк ΠΈΠ· Π‘Π”?

Если Π΄Π°, Ρ‚ΠΎ этот синтаксичСский Π°Π½Π°Π»ΠΈΠ· выполняСтся, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, для PostgreSQL Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ pg . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

var pgTypes = require('pg').types;
// Don't parse dates to js Date() objects
pgTypes.setTypeParser(1082, 'text');
// Don't parse timestamps to js Date() objects
pgTypes.setTypeParser(1184, 'text');

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° text .

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ - это функция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, настраиваСмая функция parseTime ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.

Однако я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½ Π² вашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС. БущСствуСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… часов, поэтому Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ created_at Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

@ aj0strow Π’Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ knex ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ timestamp Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Javascript Date ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ строк ΠΈΠ· Π‘Π”?

Если Π΄Π°, Ρ‚ΠΎ этот синтаксичСский Π°Π½Π°Π»ΠΈΠ· выполняСтся, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, для PostgreSQL Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ pg . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

var pgTypes = require('pg').types;
// Don't parse dates to js Date() objects
pgTypes.setTypeParser(1082, 'text');
// Don't parse timestamps to js Date() objects
pgTypes.setTypeParser(1184, 'text');

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° text .

@ rhys-vdw ΠΎΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ Π² порядкС.

@elhigu спасибо!

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я искал. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΊ ::text Π² запросС, Π½ΠΎ для мСня это ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ΠΎ ошибкам, поэтому Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ синтаксичСский Π°Π½Π°Π»ΠΈΠ· ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ new Date ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Бпасибо Π΅Ρ‰Π΅ Ρ€Π°Π·.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ