我time with time zone在Postgres的平等问题上遇到了麻烦。 timestamp with time9 a5 K0 c! w4 s! j" y1 D
zone平等的工作方式与我期望的一样,如果在对时区进行归一化之后,如果时间相同,那么它应该为真: & I( s: f& B) O9 T3 Dpostgres=# select '2013-06-27 12:00:00 -0800'::timestamp with time zone = '2013-06-27 14:00:00 -0600'::timestamp with time zone;5 k7 X7 i9 R0 U- Z7 r; p* x8 _
?column? 0 R! N9 B# s) e |! L+ m9 S- S----------: h6 l, k5 b/ }4 a# k* h3 v
t% E; k1 S* q0 w' ]$ s
但是,似乎不适用于以下情况time with time zone:* H3 F4 f( A. b/ `5 {
postgres=# select '12:00:00 -0800'::time with time zone = '14:00:00 -0600'::time with time zone; & V9 s1 x' s1 g/ ]& h) l+ A ?column? 2 s' l5 L0 a2 ^% z: b---------- 9 i* K! A; ?) x! c) s/ I* h9 k f ) o+ P6 I7 B, q9 c但是,不平等在我期望他们如何实现的过程中起作用: ! [; G& M( A" H7 x( N) r" e/ c+ apostgres=# select '12:00:00 -0800'::time with time zone '13:59:00 -0600'::time with time zone;; R/ ?' P/ E/ x' [7 v
?column?1 ], D# w$ b+ I" D, |
----------( w! Q6 l# ^; s, E+ C7 s
t. R, Q9 F2 q4 U4 h
我有什么误会time with time zone吗?如何以与timestamp with time zone平等相同的方式处理时区来评估平等? 9 V5 v8 m+ C( s' E: Y1 r0 W% R y, ] " t" w$ E) Q- d; W) f 解决方案:! A( j2 D2 _) O8 `
+ _3 c7 M3 H, A) v* A7 Q9 @7 }) y' N5 S) P6 B, J
4 O9 h2 D8 h5 E& p" q" X 以下是两种评估timetz平等的方法:+ D. h1 f! J e( x1 H& @8 Q
SELECT a, b, a = b AS plain_equality 7 a$ b' N9 S* A ,'2000-1-1'::date + a = '2000-1-1'::date + b AS ts_equality 6 [! u0 p: z! ^) x @! ? ,a AT TIME ZONE 'UTC', b AT TIME ZONE 'UTC' AS timetz_equality# m% X* O p0 S* o- B2 }% O+ h( D
FROM ( 6 s! F. m8 C0 ]/ `+ B SELECT '12:00:00 -0800'::timetz AS a, '14:00:00 -0600'::timetz AS b% Y, e3 H2 A8 G4 {2 Y, W
) sub;8 Y/ @% ?0 Y1 N( k/ x
在 第一个 将它添加到一个date。该 第二 通过使用AT TIME 7 U. P& J1 ^* @1 r2 N# E9 c# BZONE构建体。. B% S# w' u- B, w |
但不要使用time with time zone。曾经。 ; r3 P6 a y+ c1 ^% ZPostgres仅支持该类型,因为它在SQL标准中。但是它是设计破坏的(不能考虑DST!),不建议使用。" u0 u, H G, G- Q P! C
在这里引用手册:6 K& O8 l; @) g; p# m3 o' a$ u- a
- z6 G3 X! w/ h7 X% f1 |# }
类型time with time 5 x6 S1 p. |6 a5 ~zone是由SQL标准定义的,但是定义显示的属性会导致有用的疑问。在大多数情况下,组合date,time,timestamp without$ |' F! i9 W! ]) c
time zone,和timestamp with time zone应提供的任何应用程序所需要的日期/时间功能的完整范围。