sql—处理postgresql中两个日期之间的时间戳的最佳方法

8aqjt8rx  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(315)

我的表中有日期字段,格式为 yyyy-mm-dd HH:MM:SS 想在两人之间取得记录 11-july-2020 包容的 14-july-2020 但这上面的记录不见了 14th . 尝试

= && < SYMMETRIC 但他们中没有一个在工作。
当前正在使用 select .... from employee where ... and created_on in between ?1 and ?2 . 它不包括14日创造的记录。

qxgroojn

qxgroojn1#

我想你想要:

where col >= '2020-07-11' and col < '2020-7-15'

或者,使用时间戳来表示:

where col::timestamp >= '2020-07-11'::timestamp and
      col::timestamp < '2020-07-14'::timestamp + interval '1 day'

请注意,较高端的时间比2020-07-14晚一天,因此您可以在这一天获得所有时间。
你也可以使用 between 作为:

where col::date between '2020-07-11'::date and '2020-07-14'::date

但我不鼓励使用 between 使用日期/时间数据类型——正是因为时间组件的问题。

6uxekuva

6uxekuva2#

如果您的字段有格式 yyyy-mm-dd HH:MM:SS 它是时间戳字段而不是日期字段。正如@gordon所显示的那样,这在需要进行的比较中起到了很大的作用。如果将时间戳与日期(2020年7月14日)进行比较,则日期将变为时间为00:00:00的时间戳:

select '07/14/2020'::timestamp;
      timestamp      
---------------------
 2020-07-14 00:00:00

这意味着你将错过14号的时间戳,那是在13/14号午夜之后。

相关问题