H2数据库Epoch时间转24小时制Datetime结果错误的修正方法
解决H2数据库Epoch时间转24小时制Datetime的问题
问题原因
你当前查询使用的格式符hh是12小时制的代码,因此会把下午1点显示为01;而24小时制对应的格式符是HH,这是导致结果显示错误的核心原因。
修改后的查询语句
select to_char((DATEADD('SECOND', ((END_TIME/ 1000) + 19800), DATE '1970-01-01')), 'yyyy-mm-dd HH:mi:ss') AS END_TIME_VAL from MTTR;
更规范的时区处理建议
手动添加19800秒(对应UTC+5:30)的方式灵活性较差,H2支持通过时区标识符直接处理时区转换,推荐使用以下写法:
select to_char(TIMESTAMP '1970-01-01 00:00:00' + END_TIME / 1000 * INTERVAL '1' SECOND AT TIME ZONE 'UTC' AT TIME ZONE 'Asia/Kolkata', 'yyyy-mm-dd HH:mi:ss') AS END_TIME_VAL from MTTR;
其中Asia/Kolkata对应UTC+5:30时区,你可以根据实际需求替换为目标时区的标准标识符。
内容的提问来源于stack exchange,提问作者stacktesting
相关产品推荐
相关产品推荐

