遗留系统10位数字转SQL DateTime结果不符,求正确转换方法
解决10位数字到SQL DateTime的正确转换
首先,根据你提供的示例(10位数字1419120000对应遗留系统UI的12/20/2022),核心问题是你当前使用的Unix时间戳基准(1970-01-01)和遗留系统的时间戳起始点不一致。
两种可行的转换方案
方案1:直接添加固定差值
通过计算已知示例的时间差,可得到需要补充的秒数:
- 目标日期
2022-12-20 00:00:00对应的标准Unix时间戳是1671484800 - 两者差值为:
1671484800 - 1419120000 = 252364800秒
转换SQL语句:
DATEADD(second, [your_timestamp_column] + 252364800, '1970-01-01')
方案2:使用遗留系统的时间戳起始点
通过已知的时间戳和对应日期,反推遗留系统的时间戳起始日期:
-- 计算起始日期 SELECT DATEADD(second, -1419120000, '2022-12-20') AS epoch_start;
执行后得到起始日期为1977-12-20 00:00:00.000,后续所有转换都使用这个起始点:
DATEADD(second, [your_timestamp_column], '1977-12-20')
验证建议
为确保方案通用,建议选取其他10位时间戳,对比遗留系统UI显示的日期和转换结果是否一致,确认起始点或差值的正确性。
内容的提问来源于stack exchange,提问作者Sobuj Akand
相关产品推荐
相关产品推荐

