使用Pro2同步Progress至SQL Server时的日期时间转换问题
解析Pro2同步的Progress datetime转int32值
根据你提供的样本数据,这些int32值是从1979-09-19 00:00:00开始累计的秒数,可以通过SQL Server的DATEADD函数转换为datetime类型。
验证样本值
- 对于
966188916:SELECT CAST(DATEADD(ss, 966188916, '1979-09-19') AS DATETIME) -- 结果:2010-04-12 01:48:36,与你给出的近似日期匹配 - 对于
1091012202:SELECT CAST(DATEADD(ss, 1091012202, '1979-09-19') AS DATETIME) -- 结果:2014-07-28 01:52:42,与你给出的近似日期匹配
批量转换代码
如果需要批量转换整列数据,可以使用:
SELECT your_int_column, CAST(DATEADD(ss, your_int_column, '1979-09-19') AS DATETIME) AS converted_datetime FROM your_table
补充说明
这个起始日期1979-09-19是通过样本值反向推导得出的,大概率是Pro2同步工具在转换Progress datetime类型时使用的自定义基准(Progress官方文档未明确说明的内部转换规则)。你的时间列用秒数转time的逻辑也符合这一规则——本质都是基于秒数的偏移计算。
内容的提问来源于stack exchange,提问作者Michael O'Flaherty
相关产品推荐
相关产品推荐

