【发布时间】:2021-03-16 22:01:25
【问题描述】:
我在名为 dataset4_do_edycji 的表中有名为 a_timestamp 的时间戳列 - 格式化为纪元时间戳。我需要以这种格式将其更新为人类可读的:dd.mm.yyyy hh.mm.ss.ms。我尝试使用
UPDATE dataset4_do_edycji SET a_timestamp=(select dateadd(ms, a_timestamp%(3600*24*1000),
dateadd(day, a_timestamp/(3600*24*1000), '1970-01-01 00:00:00.0')))
但是它会引发错误:
不允许从数据类型 datetime 到 bigint 的隐式转换。使用 CONVERT 函数运行此查询。
目前a_timestamp 被声明为 bigint。当我运行以下命令时,它会显示正确的值:
select dateadd(ms, a_timestamp%(3600*24*1000),
dateadd(day, a_timestamp/(3600*24*1000), '1970-01-01 00:00:00.0')
) as a_timestamp
FROM dataset4_do_edycji
除了以 CSV 格式下载两个文件并手动将它们合并为一个,然后将其作为新表导入之外,还有什么方法可以更新它?谢谢。
【问题讨论】:
-
日期和时间数据类型没有格式;充其量将时代转换为日期和时间值,然后担心表示层中的格式。至于怎么做,Stack Overflow上有很多例子,比如converting Epoch timestamp to sql server(human readable format)、Convert Epoch to DateTime SQL Server和Convert unix epoch timestamp to TSQL datetime。
-
非常感谢,我会检查一下:)
标签: sql sql-server sql-update epoch dateadd