【发布时间】:2012-06-13 23:26:22
【问题描述】:
我在我的应用程序中使用时间戳,但问题是在 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 服务器:1339384301
所以有 36002 秒或 10 小时的差异,这是我的时区偏移量。
【问题讨论】:
-
两者相差有多大?
-
你是如何“同时”运行这些的?在平行下?或者运行它们之间是否有一段时间?
-
用上述问题的答案更新了问题
-
是的,字符串被解释为本地时间。但是,我不知道如何让 SQL Server 将其视为 UTC。很可能会在字符串中添加时区或设置一些语言环境参数。
标签: javascript sql-server timestamp