繁体   English   中英

如何比较PostgreSQL时间戳中的日期和时区?

[英]How to compare date in PostgreSQL timestamp with time zone?

我在PostgreSQL中有一个字段,该字段具有:“带有时区比较的时间戳”

我需要使用JS的数据范围比较

var start = Date.UTC(2012,02,30);//1333065600000

var end = Date.UTC(2013,02,30); //1364601600000

结果为bigint数字:

如何在sql PostgreSQL请求中使用start(1333065600000)和end(1364601600000)?

尝试这样的事情:

select *
from my_table
where date_field between to_timestamp(1333065600000) and to_timestamp(1364601600000);

这本质上与TO_TIMESTAMP相同,但是如果服务器不是以UTC运行,则转换为UTC时区。

SELECT * FROM table WHERE date BETWEEN
   ((TIMESTAMP WITH TIME ZONE 'epoch' + 1333065600 * INTERVAL '1 second') AT TIME ZONE 'UTC')
   AND
   ((TIMESTAMP WITH TIME ZONE 'epoch' + 1364601600 * INTERVAL '1 second') AT TIME ZONE 'UTC');

请注意,Javascript时代精度为毫秒,而Unix时代仅为秒。 您必须舍弃输入值的最后三位数字(就像我在上面的示例中所做的那样),或者除以1000(下面的示例)。

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1333065600000/1000 * INTERVAL '1 second') AT TIME ZONE UTC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM