从 AS/400 中的表中提取 YYMMDD 日期时出错

问题描述 投票:0回答:1

我有一个使用 5250 或 DBeaver 连接的 AS/400 数据库,当它在 40 多年前创建时,创建了一个名为 BIRTHDT 的字段,其格式为 YYMMDD 意味着当我运行查询时

SELECT name, 
       birthdt,
       varchar_format(timestamp_format(birthdt,'YYMMDD'),'DD/MM/YYYY') AS Birthdate 
FROM QS36F.Table

我得到840212的值12/02/2084,所以这个人出生在2084年,有办法解决吗?

sql validation db2 db2-400
1个回答
0
投票

解决此问题的一种方法是添加出生日期检查,以确定它是否属于 19 世纪或 20 世纪。例如,任何年份为“24”的日期都应被视为 19 世纪的一部分:

SELECT varchar_format(
         timestamp_format(
              CASE WHEN birthdt > 240000 THEN '19' || birthdt ELSE '20' || birthdt END ,
              'YYYYMMDD'),
         'DD/MM/YYYY'
       ) AS Birthdate 
FROM mytable
© www.soinside.com 2019 - 2024. All rights reserved.