DB2 12.1中如何将整数日期值转换为标准日期格式?
DB2 12.1 整数日期值转换为标准日期格式
方法1:保留完整时间部分(匹配SQL Server结果)
如果需要和SQL Server语句的输出一致,保留01:01:01.111...的时间部分,可使用ADD_DAYS配合时间戳起始值,再通过TO_CHAR格式化:
SELECT TO_CHAR( ADD_DAYS(TIMESTAMP('1849-12-31 01:01:01.111111'), AAA."Date"), 'YYYY-MM-DD HH24:MI:SS.FF6' ) AS STANDARD_DATE FROM AAA WHERE condition;
- 说明:
TIMESTAMP('1849-12-31 01:01:01.111111')对应SQL Server中的起始时间(DB2时间戳精度为6位,截断最后一位不影响日期计算)ADD_DAYS将整数天数加到时间戳上,返回包含时间的完整时间戳TO_CHAR用于格式化输出,可根据需求调整格式字符串(仅需日期则用'YYYY-MM-DD')
方法2:仅转换日期部分
如果只需要日期结果,可简化为:
SELECT DATE(ADD_DAYS(DATE('1849-12-31'), AAA."Date")) AS STANDARD_DATE FROM AAA WHERE condition;
或者用DAYS函数计算:
SELECT DATE(DAYS('1849-12-31') + AAA."Date") AS STANDARD_DATE FROM AAA WHERE condition;
之前尝试未达预期的原因
- 若你之前仅用
ADD_DAYS('1849-12-31', 59169),返回的是DATE类型(仅日期),无法体现时间部分,和SQL Server带时间的结果存在差异 - 若日期计算仍有偏差,需确认整数列
"Date"的值是否为完整天数偏移,以及会话时区是否和SQL Server一致(DB2默认使用会话时区,可能影响时间戳显示)
内容的提问来源于stack exchange,提问作者MaMu
相关产品推荐
相关产品推荐

