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

标签 sql database postgresql date

在 postgresql(windows 版本 9.2.4)中比较日期时,我遇到了一个奇怪的场景。

我的表中有一列显示 update_date,类型为 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

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

最佳答案

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

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

关于sql - 如何比较 Postgresql 中日期时间字段中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469154/

相关文章:

php - 上传文件并以单一形式提交文本是否可能?

mysql - 选择日期范围内的补充记录

sql - 使用变量替换sql文件中的文本

c# - 在 foreach 循环中调用 Dataset 属性

java - 将应用程序部署到 AWS Lambda 会引发 Postgres 驱动程序错误

sql - 最多允许 10 个具有相同 GUID 的项目

PostgreSQL 交叉表 : Month rows and Day columns; Error rowid datatype does not match return rowid datatype

sql - 如何在其中使用通配符?

database - Redis 存储历史数据

mysql - 信息技术背景下的查迪姆