JS和SQL Server之间的UTC时间戳不同

时间:2012-06-11 01:09:59

标签: javascript sql-server timestamp

我使用时间戳作为我的应用程序的一部分,但问题是在Javascript和SQL Server中同时创建的时间戳显示不同的值。它们在同一台计算机上运行,​​因此系统时钟不是问题。

使用Javascript:

var now = new Date();

console.log( new Date(now.getUTCFullYear(),
        now.getUTCMonth(),
        now.getUTCDate(),
        now.getUTCHours(),
        now.getUTCMinutes(),
        now.getUTCSeconds()).valueOf() /1000);​

SQL Server 2012:

SELECT datediff(second,'1970-01-01 00:00:00.000',getutcdate())

这可能是约会主义论证的第一部分,是不是在UTC中解释01/01/1970?

为了测试,我在jsfiddle中执行了javascript,并且在管理工作室中将SQL放在彼此的1-2秒内。

结果: Javascript:1339348299 SQL Server:1339384301

所以有36002秒或10小时的差异,这是我的时区偏移量。

2 个答案:

答案 0 :(得分:0)

好的,以下两种获取时间戳的方法将会比较...

的Javascript

return Math.round(new Date().getTime()/1000.0);

SQL Server

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

答案 1 :(得分:0)

根据您展示的内容,我会说两个系统中的一个系统的时区设置不正确。您可以通过在每个SQL和JavaScript中使用相应的getdate()(而不是getUTCdate())函数并进行比较来检查这一点。我的猜测是其中一个会返回与getUTCdate相同的东西,表明那个是修复的那个。