我有一个使用 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年,有办法解决吗?
解决此问题的一种方法是添加出生日期检查,以确定它是否属于 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