繁体   English   中英

如何处理以字符串形式存储在Teradata的int字段中的日期?

[英]How to deal with a date stored as a string in an int field in Teradata?

我在Teradata中有一个表,该表以以下形式“ YYYYMMDD”将日期存储在8个字符的INT字段中,因此今天它将存储“ 20180308”。 如果我尝试将其作为这样的日期进行发布:

CAST(date_field AS DATE FORMAT 'YYYY-MM-DD')

它将日期转换为3450年的某个将来的日期。

我认为此数据未存储为日期对象是一个错误。 无论如何,有克服这种故障的方法吗? 不幸的是,我无权更改此设置。

谢谢

它不是8位字符的整数,而是8 位数字的整数。

Teradata使用以下方式存储日期

(year - 1900) * 10000
+ (month * 100)
+ day

今天的结果是1180308 ,而20180308将返回3918-03-08

要将其投放到您需要使用的日期

cast(intdate-19000000 as date)

选择cast('20180308'作为日期格式'yyyymmdd');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM