如何处理在 Teradata 的 int 字段中存储为字符串的日期?
How to deal with a date stored as a string in an int field in Teradata?
我在 Teradata 中有一个 table,它将日期存储在 8 个字符的 INT 字段中,格式如下 "YYYYMMDD",所以今天它将存储“20180308”。如果我尝试将其转换为这样的日期:
CAST(date_field AS DATE FORMAT 'YYYY-MM-DD')
它将日期转换为 3450 年左右的某个未来日期。
我认为此数据未存储为日期对象是错误的。无论如何要克服这个故障?不幸的是,我无权更改此设置。
谢谢
select cast('20180308' as date format 'yyyymmdd') ;
这不是一个 8 字符 整数,它是一个 8 数字 整数。
Teradata 使用
存储日期
(year - 1900) * 10000
+ (month * 100)
+ day
今天的结果是 1180308
,20180308
将是 return 3918-03-08
将其转换为您需要使用的日期
cast(intdate-19000000 as date)
我在 Teradata 中有一个 table,它将日期存储在 8 个字符的 INT 字段中,格式如下 "YYYYMMDD",所以今天它将存储“20180308”。如果我尝试将其转换为这样的日期:
CAST(date_field AS DATE FORMAT 'YYYY-MM-DD')
它将日期转换为 3450 年左右的某个未来日期。
我认为此数据未存储为日期对象是错误的。无论如何要克服这个故障?不幸的是,我无权更改此设置。
谢谢
select cast('20180308' as date format 'yyyymmdd') ;
这不是一个 8 字符 整数,它是一个 8 数字 整数。
Teradata 使用
存储日期(year - 1900) * 10000
+ (month * 100)
+ day
今天的结果是 1180308
,20180308
将是 return 3918-03-08
将其转换为您需要使用的日期
cast(intdate-19000000 as date)