Sql严格多于查询

时间:2015-04-16 09:53:26

标签: sql postgresql

我在PostgreSQL

我需要打印所有邮件的创建日期严格超过2015-04-04。我尝试了以下查询:

SELECT *
FROM mailing.mailing 
WHERE creation_date > '2015-04-04';

SELECT *
FROM mailing.mailing 
WHERE creation_date >= '2015-04-04';

但他们制作了相同的结果集(包括' 2015-04-04')。是否可以在没有明确说出WHERE creation_date >= '2015-04-05';

的情况下编写此类查询

UPD:列的类型为timestamp without time zone

2 个答案:

答案 0 :(得分:3)

如果您的creation_date字段属于datetime类型,请尝试将其与'2015-04-04 23:59:59'进行比较,因为'2015-04-04 08:30:00'似乎大于'2015-04-04' {1}}。

答案 1 :(得分:2)

假设您的数据库的默认日期格式为'YYYY-MM-DD'creation_date字段为日期类型,则您的查询实际上会自动转换为以下内容:

SELECT *
FROM mailing.mailing 
WHERE creation_date > to_date('2015-04-04', 'YYYY-MM-DD');

您提供的日期值代表当天的第一秒,这就是您查看查询之间没有区别的原因。 (你的第一个查询会排除当天的第一天。)

你可以做些什么来避免这种情况:

where creation_date >= to_date('2015-04-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS')

where date_trunc(creation_date-1) = '2015-04-04'