postgresql中的日期比较不起作用
问题描述:
我的postresql数据库中的查询有问题。我试图让一个特定的日期,时间后,最后100个日志,但是当我使用此查询:postgresql中的日期比较不起作用
select * from log_entry WHERE array['MESSAGE'] && tags AND CAST(last_updated AS DATE) >= '2013-02-28T16:47:26.394213' ORDER BY last_updated DESC LIMIT 100
这里LAST_UPDATED列的类型是:时间戳没有时区
有时我来自'2013-02-28T16:47:26.394213'之前的日志,我做错了什么?有没有更好的方式来做到这一点,而不是使用转换?
在此先感谢!
答
(由请求评论转贴)
嗯,有你的问题:当你施放一个时间戳(有或没有时区)为日期,您截断时间戳的时间部分。为什么不投'2013-02-28T16:47:26.394213'
到一个时间戳,并直接与last_updated
比较?
select * from log_entry
WHERE array['MESSAGE'] && tags
AND last_updated
>= '2013-02-28T16:47:26.394213'::timestamp without time zone
ORDER BY last_updated DESC LIMIT 100
答
使用此。这应该工作。
SELECT * FROM log_entry WHERE阵列[ 'MESSAGE'] & &标签 AND年龄(LAST_UPDATED)
=年龄(现在的()) ORDER BY LAST_UPDATED DESC LIMIT 100
那么,你的问题就是:当你将一个时间戳(有或没有时区)施加到一个日期时,你会截断时间戳的时间部分。为什么不将'2013-02-28T16:47:26.394213''投射到时间戳并直接与'last_updated'比较? – 2013-02-28 17:25:25