【发布时间】:2013-05-19 15:44:44
【问题描述】:
我尝试了许多已经给出的将 EPOCH 转换为 SQL Server 日期时间的答案。当 EPOCH 达到 10 亿秒时,它们就会起作用。但一旦它越过万亿大关,它就会破产!例如。 -->
1. SELECT dateadd(MCS,1351187877744,'1970-01-01')
2. SELECT dateadd(NS,1351187877744,'1970-01-01')
3. SELECT dateadd(NANOSECOND, 1351187877744, '1970-01-01 00:00:00.0000000')
4. SELECT convert(bigint, datediff(ss, '01-01-1970 00:00:00',1351187877744))
以上所有操作都失败并出现以下溢出错误: “将表达式转换为数据类型 int 时出现算术溢出错误。”
有趣的是,当我在 this site 上输入此日期时,它会返回正确的值。
关于如何以适用于任何数量级(>万亿秒等)的 EPOCH 的方式执行此操作的任何建议
【问题讨论】:
-
Mitch,转换为“GMT:Thu, 2012 年 10 月 25 日 17:57:57 UTC”,这是它应该转换为的正确值。我认为这个问题与精度有关,因为即使十亿秒也足以得到这个日期。
标签: sql-server datetime epoch