I have been facing a strange scenario when comparing dates in postgresql(version 9.2.4 in windows).
I have a column in my table say update_date with type 'timestamp without timezone'.
Client can search over this field with only date (i.e: 2013-05-03) or date with time (i.e: 2013-05-03 12:20:00).
This column has the value as timestamp for all rows currently and have the same date part(2013-05-03) but difference in time part.

当我比较这篇专栏文章时,我得到了不同的结果.比如:

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相关问答推荐

在SELECT陈述中使用子查询提高查询性能

如何返回字符串中包含相同值的数据?

Postgresql在加入时显示重复的行

Snowflake SQL比较克隆x原始计数

如何更改函数返回的列名?

没有循环的SQL更新多个XML node 值

编写一个SQL查询来返回收视率较高的类型,并取这些收视率的平均值,我该如何做呢?

Pgsql-返回包含多行数据的行

ColdFusion+Docker:未安装SQLSERVER包

对于多字节字符,SQL Server中的DATALENGTH返回1字节

如何在AWS Athena中 Select JSON数组的最后一个元素?

将时间范围划分为全天和前后剩余小时

在 PostgreSQL 中生成时间序列查询

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

具有分组条件的不同计数 (DAX)

如何将 START 和 END 日期之间的日期差异作为 SQL 中的单独列获取

PostgreSQL中如何提取以特定字符开头的字符串中的所有单词?

使用其他表 SUM 的交换价格转换价格并获得 AVG

如何获得上个月和下个月之间的销售额差异

PostgreSQL 如何在一组项目及其数量上找到完全相同的订单?