我在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
。
答案 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'