PostgreSQL 中的日期比较不起作用

4

我在我的PostgreSQL数据库中遇到了一个问题。我想要在特定的日期时间之后获取最后的100个日志,但是当我使用以下查询时:

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 的类型是:没有时区的时间戳(timestamp without time zone)

有时我会收到早于 '2013-02-28T16:47:26.394213' 的日志,我是否做错了什么?除了使用 cast 之外,还有更好的方法吗?

提前感谢!


好的,这就是问题所在:当你将一个带有或不带有时区的时间戳转换为日期时,你会截断时间戳的时间部分。为什么不将 '2013-02-28T16:47:26.394213' 转换为时间戳并直接与 last_updated 进行比较呢? - user554546
2个回答

5

你遇到的问题在于:当你将带或不带时区的时间戳转换为日期时,会截断时间戳的时间部分。为什么不将 '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
请使用这个。应该可以工作。
选择*从log_entry中WHERE array ['MESSAGE'] && tags AND age(last_updated)
= age(now()) ORDER BY last_updated DESC LIMIT 100


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接