将纪元时间戳更新为 dd.mm.yyyy hh.mm.ss.ms
Update epoch timestamp to dd.mm.yyyy hh.mm.ss.ms
我在 table 中有一个名为 a_timestamp
的时间戳列,名为 dataset4_do_edycji
- 格式为纪元时间戳。我需要以这种格式将其更新为人类可读: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')))
但是它抛出错误:
Implicit conversion from data type datetime to bigint is not allowed. Use the CONVERT function to run this query.
目前 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 格式下载这两个文件并手动将它们合并为一个文件,然后将其作为新文件导入之外,还有什么方法可以更新它 table?谢谢。
一种简单的方法是添加计算列:
alter table dataset4_do_edycji add a_timestamp_dt as
(dateadd(ms, a_timestamp%(3600*24*1000),
dateadd(day, a_timestamp/(3600*24*1000), '1970-01-01 00:00:00.0')
)
)
然后在您查询时计算列值,因此它始终是最新的。
我在 table 中有一个名为 a_timestamp
的时间戳列,名为 dataset4_do_edycji
- 格式为纪元时间戳。我需要以这种格式将其更新为人类可读: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')))
但是它抛出错误:
Implicit conversion from data type datetime to bigint is not allowed. Use the CONVERT function to run this query.
目前 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 格式下载这两个文件并手动将它们合并为一个文件,然后将其作为新文件导入之外,还有什么方法可以更新它 table?谢谢。
一种简单的方法是添加计算列:
alter table dataset4_do_edycji add a_timestamp_dt as
(dateadd(ms, a_timestamp%(3600*24*1000),
dateadd(day, a_timestamp/(3600*24*1000), '1970-01-01 00:00:00.0')
)
)
然后在您查询时计算列值,因此它始终是最新的。