CURRENT_DATE查询返回0个条目

时间:2014-06-10 08:55:35

标签: postgresql

我有这样的查询

SELECT b.id, b.publisher_id, b.name, b.size, b.present,
       b.display, d.book_id AS download,
       b.download_date
  FROM books          b
  LEFT JOIN downloads d ON d.book_id=b.id
 WHERE b.download_date = CURRENT_DATE
 ORDER BY b.id
 LIMIT 10 OFFSET 0

我的数据库中有这个条目。

id(bigserial) publisher_id(bigint) name(character varying) size(bigint) present(boolean) display(boolean) download_date(timestamp with time zone)
19;1;"Attacks on and Countermeasures for USB Hardware Token Devices.rar";634764;TRUE;TRUE;"2014-06-10 08:05:28.439+00"

但它没有显示结果。但今天在Windows中2014-06-10。 有什么问题?

2 个答案:

答案 0 :(得分:2)

timestamp 2014-06-10 08:05:28.439+00不等于date 2014-06-10。将时间戳截断为一天

WHERE date_trunc('day', b.download_date) = CURRENT_DATE

select date_trunc('day', '2014-06-10 08:05:28.439+00'::timestamp);
     date_trunc      
---------------------
 2014-06-10 00:00:00

答案 1 :(得分:2)

这是因为您将时间戳与日期进行比较。 PostgreSQL不会让您的数据被截断,因此它会将日期转换为时间戳(当天的00:00:00时间点)来进行比较。

如果您想比较download_date的日期部分,可以将其投放到date以获得日期与日期比较:

WHERE DATE(b.download_date) = CURRENT_DATE