我正在尝试将Nvarchar(510)列转换为人类可读日期时间。 EPOCHDATE列是一个bigint值。
当我运行时:
select
dateadd(ms, 1427213353825%(3600*24*1000),
dateadd(day, 1427213353825/(3600*24*1000), '1970-01-01 00:00:00.0'))
我以人类可读的形式取回日期。 1427213353825是第一行的EPOCHDATE值。
但是当我使用我得到的列
运行它时nvarchar值的转换' 1427213353825'溢出了一个int列。
我该如何解决这个问题?我没有创建表格,所以我不认为我可以更改该列。
答案 0 :(得分:0)
将epoch列转换为bigint可以解决该错误。
DECLARE @blah TABLE (epoch NVARCHAR(512));
INSERT INTO @blah VALUES ('1427213353825');
SELECT
DATEADD(ms, CAST(epoch AS BIGINT) %(3600*24*1000),
DATEADD(DAY, CAST(epoch AS BIGINT)/(3600*24*1000), '1970-01-01 00:00:00.0'))
FROM @blah