我想将日期以CCYYMMDD
的格式存储在Teradata中,但是我没有这样做。在下面找到我到目前为止尝试过的内容:
查询1:
SEL CAST(CAST(CURRENT_DATE AS DATE FORMAT 'YYYYMMDD') AS VARCHAR(8))
-- Output: 20191230 ==> this works!
查询2:
SEL CAST(CAST(CURRENT_DATE AS DATE FORMAT 'CCYYMMDD') AS VARCHAR(8))
-- output: SELECT Failed. [3530] Invalid FORMAT string 'CCYYMMDD'.
似乎CCYYMMDD
暂时无法在Teradata中使用。有解决方法吗?
使用的工具:Teradata SQL助手
答案 0 :(得分:0)
内部,日期以整数形式存储在Teradata中。因此,当您说要以其他格式存储它们时,我认为您不能这样做。但是您可以选择如何显示/返回值。
我敢肯定有一种更干净的方法来获取所需的格式,但这是一种方法:
WITH cte (mydate) AS (
SELECT CAST(CAST(CURRENT_DATE AS DATE FORMAT 'YYYYMMDD') AS CHAR(8)) AS mydate
)
SELECT
CAST(
(CAST(SUBSTRING(mydate FROM 1 FOR 2) AS INTEGER) + 1) -- generate "century" value
AS CHAR(2) -- cast value as string
) || SUBSTRING(mydate FROM 3) AS new_date -- add remaining portion of date string
FROM cte
您必须添加一些额外的逻辑来处理1000年之前和9999年之后的年份。我没有要测试的TD系统,但请尝试一下,让我知道。