teradata yymmdd 日期格式

teradata yymmdd date format

我有一个字段应该是 6 位字符,但它是数字。我正在使用以下代码添加前导零:

select CAST(CAST(CHD_OPEN_DATE AS FORMAT '9(6)') AS CHAR(9))

我正在使用以下代码将其格式化为日期:

cast(cast(lpad(to_char(CHD_OPEN_DATE),6,'0') as date format 'YYMMDD') as date format 'YYYY-MM-DD')

使用这种日期格式时,1990 年显示为 2090。是否有解决方法?

如果您的号码采用 YYMMDD 格式,您可以使用以下内容转换为日期,而无需转换为中间字符串。假设日期范围在 1930 年到 2029 年之间:

SELECT 900331 AS CHD_OPEN_DATE,
Cast(CASE WHEN CHD_OPEN_DATE < 300000
          THEN CHD_OPEN_DATE + 1000000
          ELSE CHD_OPEN_DATE
     END AS DATE)