ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ΅Ρ ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅?
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ 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 ^
ΠΡΠΊΠ°Π· ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠΊ - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΈΠΌΠ΅ΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ 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
ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π΅ΡΠ΅ ΡΠ°Π·.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@ aj0strow ΠΡ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ
knex
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡtimestamp
Π² ΠΎΠ±ΡΠ΅ΠΊΡ Javascript Date ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊ ΠΈΠ· ΠΠ?ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΡΡΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ PostgreSQL Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ
pg
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΈΠΏΠΎΠ² ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°
text
.