在Teradata中使用日期

时间:2018-03-08 21:24:08

标签: sql teradata

我正在尝试将一些数据插入到Teradata数据库中,这些信息最初是从Oracle实例导出的,但我对日期有一点问题,这里是一个数据示例:

    CO_ID  | CUSTOMER_NAME  | JOIN_DATE
   1022945 | John Carpenter | 07/03/2018 01:55:24 p.m. 

这是create table语句:

CREATE TABLE transact (
co_id varchar(50),
user_name varchar(50),
join_date date);

每次执行insert语句时,Teradata都会抛出错误,例如:

expected something between a string and a unicode character ...

如何插入保留日期原始格式的信息,我必须修改创建表还是有其他技巧?

谢谢。

1 个答案:

答案 0 :(得分:0)

在Teradata中,日期是一个日期(没有时间部分)。对于插入,您必须将输入字符串转换为有效日期。

这样的东西
select cast('07/03/2018' as date format 'DD/MM/YYYY');
select cast(substr(input.join_date,1,10) as date format 'DD/MM/YYYY');

如果转换字符串as date,则format子句描述字符串部分如何用于转换为内部日期格式。

如果从日期列中选择,format子句用于描述所需的输出格式。

select cast( cast('07/03/2018' as date format 'DD/MM/YYYY') as date format 'YYYY-MM-DD')

如果向表定义format添加join_date date 'DD/MM/YYYY'子句,则定义该列的默认格式,只要没有给出显式格式,该格式就用作输出格式。

如果您也想使用时间部分,您的目标列必须是timestamp

select cast( cast(regexp_replace('07/03/2018 01:55:24 p.m.','\.m\.', 'M')
    as timestamp format 'MM/DD/YYBHH:MI:SS BT') as timestamp format 'YYYY-MM-DDBHH:MI:SS')

format phrase documentation