Sql 如何比较有时区和无时区的日期
我必须比较这两个日期才能从数据库中获取最后10分钟的记录,我使用的是postgresql 我写了这个查询Sql 如何比较有时区和无时区的日期,sql,postgresql,Sql,Postgresql,我必须比较这两个日期才能从数据库中获取最后10分钟的记录,我使用的是postgresql 我写了这个查询 select * FROM x_table WHERE x_time >= (NOW()::TIMESTAMP WITHOUT TIME ZONE - interval '10 minutes'); x_time是没有时区的时间戳,因此我将另一个转换为相同的时间戳,但它不会给出结果 查询应该写入最后1分钟的记录,但我认为由于时区问题,它没有给出结果 如何解决此问题?如果x_time
select *
FROM x_table
WHERE x_time >= (NOW()::TIMESTAMP WITHOUT TIME ZONE - interval '10 minutes');
x_time是没有时区的时间戳,因此我将另一个转换为相同的时间戳,但它不会给出结果
查询应该写入最后1分钟的记录,但我认为由于时区问题,它没有给出结果
如何解决此问题?如果x_time是没有时区的时间戳,则应为NOW()函数指定适当的时区 试一试
显示我们
选择max(x_time),NOW()::从x_表中选择没有时区的时间戳?…这将给出以下结果'2017-02-09 14:41:11.828966','2017-02-09 05:46:55.253082',然后我想您现在不应该隐式转换()-只需使用从x_表中选择*,其中x_time>=(NOW()-间隔'10分钟')代码>是的,我先尝试过,但由于这两种方法都会以不同的格式为我提供时间,并且我正在比较它们,因此不会给出正确的结果如果您使用数据填充了不带时区的时间戳
字段,则会使用当前时区保存,而不是UTC,因此如果您使用相同的时区选择它,对不起,你不必做任何转换。怎么样(现在()在时区'-04'-间隔'10分钟')
?快15点了,我看到你的最长时间(t_time)是几分钟前的14:41。你能把它标记为答案吗?我编辑了我的第一篇文章
select *FROM x_table WHERE x_time >= (NOW() at time zone '-04' - interval '10 minutes')