Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将PostgreSQL时间戳中的日期与时区进行比较?_Javascript_Postgresql - Fatal编程技术网

Javascript 如何将PostgreSQL时间戳中的日期与时区进行比较?

Javascript 如何将PostgreSQL时间戳中的日期与时区进行比较?,javascript,postgresql,Javascript,Postgresql,我在PostgreSQL中有一个字段: “带时区比较的时间戳” 我需要使用JS中的数据范围比较 var start = Date.UTC(2012,02,30);//1333065600000 var end = Date.UTC(2013,02,30); //1364601600000 这将产生bigint数字: 如何在sql PostgreSQL请求中使用开始(133306560000)和结束(1364601600000)?尝试以下方法: select * from my_table w

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

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

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

var end = Date.UTC(2013,02,30); //1364601600000
这将产生bigint数字:


如何在sql PostgreSQL请求中使用开始(133306560000)和结束(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(下面的示例)

JavaScript日期的值是自unix纪元以来的毫秒数,
1970年1月1日星期四00:00:00 GMT+0000(GMT标准时间)
使用
to_timestamp()
将unix纪元转换为时间戳。示例:
to_时间戳(133306560000)
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1333065600000/1000 * INTERVAL '1 second') AT TIME ZONE UTC;