7

mysql 和 MS SQL Server MySQL 中的时间戳为什么会有差异

select now() result: 2013-07-16 08:49:26.0

SQL 服务器:

select getdate() result: 2013-07-16 08:48:16.47

当我尝试获取unix_timestamp
MySQL 时:

SELECT UNIX_TIMESTAMP('2013-07-01') result: 1372629600

SQL 服务器:

SELECT DATEDIFF(SECOND,'1970-01-01', '2013-07-01') result 1372636800

问题:有 7200 秒 (2h) 的差异这是时区问题,两台服务器上的服务器时间与在和
上看到的相同吗?now()getdate()

4

4 回答 4

5

这是一个相当长的解决方案,但它似乎有效。它考虑了时区的偏移量。

SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), '2013-07-01')
于 2015-07-29T13:07:19.223 回答
3

您可以尝试此链接以了解 Mysql 中的时间戳

http://www.mysqltutorial.org/mysql-timestamp.aspx

对于 tsql 时间戳,您可以查看这些链接

http://www.informit.com/library/content.aspx?b=STY_Sql_Server_7&seqNum=97

http://technet.microsoft.com/en-us/library/ms188751(v=sql.110).aspx

于 2015-01-11T13:02:24.180 回答
3

在 SQL Server 上使用

select datediff(ss, '1970-01-01', SYSDATETIMEOFFSET() at time zone 'UTC')

这里,

SYSDATETIMEOFFSET()返回具有本地时区偏移量的本地系统时间,以启用到 UTC 的转换。datetimeoffset如果您想要当前时间以外的内容,请将其替换为您自己的字段。

于 2017-01-13T08:02:09.720 回答
2

很抱歉回答迟了,但这仅适用于现在的日期。如果您必须分析过去的日期并且您有不同的时区(夏季/冬季),这将无法正常工作。

于 2016-07-06T09:27:44.473 回答