2013-02-28 114 views
4

我的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'之前的日志,我做错了什么?有没有更好的方式来做到这一点,而不是使用转换?

在此先感谢!

+0

那么,你的问题就是:当你将一个时间戳(有或没有时区)施加到一个日期时,你会截断时间戳的时间部分。为什么不将'2013-02-28T16:47:26.394213''投射到时间戳并直接与'last_updated'比较? – 2013-02-28 17:25:25

回答

4

(由请求评论转贴)

嗯,有你的问题:当你施放一个时间戳(有或没有时区)为日期,您截断时间戳的时间部分。为什么不投'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 
0

使用此。这应该工作。

SELECT * FROM log_entry WHERE阵列[ 'MESSAGE'] & &标签 AND年龄(LAST_UPDATED)

=年龄(现在的()) ORDER BY LAST_UPDATED DESC LIMIT 100