【问题标题】:teradata yymmdd date formatteradata yymmdd 日期格式
【发布时间】:2017-05-26 11:48:46
【问题描述】:

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

选择 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。是否有解决方法?

【问题讨论】:

  • 您的意思是 900331 是 '1990-03-31' 而 170331 转换为 '2017-03-31'?截止年份是多少?
  • 我不确定截止年份是多少。如果您能告诉我如何使用 1910 进行设置?我将暂时完成这项工作,并进一步调查合适的日期。

标签: date format teradata


【解决方案1】:

如果您的号码具有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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2014-12-01
    • 2021-04-30
    • 2013-06-17
    • 2017-05-09
    • 2017-07-01
    • 2019-12-14
    相关资源
    最近更新 更多