小编典典

如何比较 Postgresql 中日期时间字段中的日期?

all

在比较 postgresql(Windows 中的 9.2.4 版)中的日期时,我遇到了一个奇怪的情况。

我的表中有一个列update_datetype timestamp without timezone
客户可以仅使用日期(例如:)2013-05-03或日期与时间(例如:)搜索此字段2013-05-03 12:20:00

该列的值是当前所有行的时间戳,并且具有相同的日期部分2013-05-03,但时间部分不同。

当我比较这个专栏时,我得到了不同的结果。像下面这样:

select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-03' -> No results

select * from table where update_date >= '2013-05-03' AND update_date < '2013-05-03' -> No results

select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-04' -> results found

select * from table where update_date >= '2013-05-03' -> results found

我的问题是如何使第一个查询能够获得结果,我的意思是为什么第三个查询有效但不是第一个查询?


阅读 73

收藏
2022-05-10

共1个答案

小编典典

@Nicolai 关于强制转换以及为什么任何数据的条件都是错误的都是正确的。我想您更喜欢第一种形式,因为您想避免对输入字符串进行日期操作,对吗?你不必害怕:

SELECT *
FROM table
WHERE update_date >= '2013-05-03'::date
AND update_date < ('2013-05-03'::date + '1 day'::interval);
2022-05-10