【发布时间】:2019-02-27 20:04:55
【问题描述】:
我觉得我已经阅读了大量相应的帖子,例如,
converting Epoch timestamp to sql server(human readable format)
&How do I convert a SQL server timestamp to an epoch timestamp?
但似乎无法让我的特定用例正常工作。我需要将纪元时间戳转换为正常的日期/时间值。目前,该列是 nvarchar(max) 类型。以下是其中一个日期的示例:
1478563200000
我试图让它看起来像下面这样:
2019-01-14 00:00:00.0000000
我尝试了以下所有操作都没有成功,但出现相同的错误消息:
select DATEADD(SS, CONVERT(BIGINT, baddate), '19700101') as gooddate
from table
“将表达式转换为数据类型int的算术溢出错误”
我已经尝试过几分钟、几秒钟、几天,所有相同的错误消息,此时我要告诉他们以不同的格式发送数据。
【问题讨论】:
-
您的问题是您需要的
Convert(BIGINT....)和int。转换为bigint,然后除以1000(以ms 分辨率换取s 分辨率),然后转换为int。为什么首先是nvarchar(max)类型的列?为什么不是数字类型(...比如int)? -
table中的baddate的值是多少?你能举个例子吗?也许放在 rextester.com 的墙上? -
@DavidG 我从来没有说过 BIGINT 不是数字类型,我说为什么 column 是 nvarchar 类型(它不是数字类型)。
-
@DavidG 是的,确实如此;虽然我在意识到为什么使用 bigint 而不是 int (时间戳以毫秒为单位)后更改了前两句话。关于类型的部分仍然存在并且没有改变。
标签: sql-server