0

我使用时间戳作为我的应用程序的一部分,但问题是同时在 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())

难道 datediff 论点的第一部分不是用 UTC 解释 01/01/1970 吗?

为了测试,我在 jsfiddle 中执行了 javascript,并在 management studio 中执行了 SQL,彼此在 1-2 秒内执行。

结果:Javascript:1339348299 SQL Server:1339384301

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

4

2 回答 2

1

好的,这里有两种方法来获取将比较的时间戳......

Javascript

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

SQL 服务器

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
于 2012-06-11T05:13:46.023 回答
0

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

于 2012-06-11T10:17:58.543 回答