我正在尝试将一些数据插入到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 ...
如何插入保留日期原始格式的信息,我必须修改创建表还是有其他技巧?
谢谢。答案 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')