如何在DB2的SQL SELECT语句中将日期列转换为指定时分秒的时间戳?
DB2 日期列转固定时分秒的时间戳解决方案
直接用TIMESTAMP(END_DT)无效是因为DB2将DATE类型转为TIMESTAMP时,默认会把时分秒补为00:00:00。要得到指定的11:22:33时分秒,需要手动拼接或调整时间部分,以下是两种常用方法:
方法1:生成带固定时分秒的TIMESTAMP类型数据
通过将日期转为字符串,拼接固定时间后再转回TIMESTAMP:
TIMESTAMP(CHAR(END_DT, 'MM/DD/YYYY') || ' 11:22:33')
CHAR(END_DT, 'MM/DD/YYYY'):把DATE类型的END_DT转成mm/dd/yyyy格式的字符串- 拼接固定时间字符串后,用
TIMESTAMP()函数转为标准时间戳类型
方法2:生成指定格式的字符串(用于展示)
如果只是需要输出mm/dd/yyyy hh:mm:ss格式的字符串,可使用VARCHAR_FORMAT结合时间偏移:
VARCHAR_FORMAT(TIMESTAMP(END_DT) + 11 HOURS + 22 MINUTES + 33 SECONDS, 'MM/DD/YYYY HH24:MI:SS')
- 先把
END_DT转为默认时分秒为0的时间戳,再加上对应的小时、分钟、秒偏移量 - 最后用
VARCHAR_FORMAT格式化输出为目标格式
完整查询示例
SELECT END_DT, -- 生成带固定时分秒的TIMESTAMP类型 TIMESTAMP(CHAR(END_DT, 'MM/DD/YYYY') || ' 11:22:33') AS FIXED_END_TS, -- 生成目标格式的字符串 VARCHAR_FORMAT(TIMESTAMP(END_DT) + 11 HOURS + 22 MINUTES + 33 SECONDS, 'MM/DD/YYYY HH24:MI:SS') AS FIXED_END_STR FROM YOUR_TABLE_NAME;
内容的提问来源于stack exchange,提问作者oscilatorium
相关产品推荐
相关产品推荐

