我有bigint值 635107999009730000 。 我正在使用此语句将此bigint转换为datetime:
select dateadd(second, 635107999009730000 /1000 + 635107999009730000 % 1000 + 8*60*60, '19700101')
我收到溢出错误。看起来像dateadd函数只是无法处理这个bigint值。
如何将 635107999009730000 转换为日期时间?
635107999009730000 值,我真的不知道这应该是什么日期时间。
答案 0 :(得分:1)
我可能不在这里,但是这个值看起来像纳秒,如果是这样的话,你只需要将它除以十亿来获得秒并将其添加到unix时间:
select dateadd(second, 635107999009730000 / 1000000000, '19700101')
您必须针对您的数据进行测试。
答案 1 :(得分:0)
我今天遇到了同样的问题。 user1016945和Suroh都是正确的。用0001-01-01盯着每秒10 ^ 7个刻度。所以我略微修改了苏轼的陈述。由于我不是SQL专家,它很笨拙,但它有效。你会失去几秒钟。如果我尝试包含秒,它会溢出: dateadd(年,-2000,dateadd(分钟,635107999009730000/600000000,' 2001-01-01'))
我减去了2000年,因为我不知道如何将0001-01-01传递给SQL。 :)