【问题标题】:Working with dates in Teradata在 Teradata 中处理日期
【发布时间】:2018-03-09 06:04:59
【问题描述】:

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

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

这是创建表语句:

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

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

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

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

谢谢。

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    在 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')
    

    如果您在表定义join_date date 'DD/MM/YYYY' 中添加format 子句,则为该列定义默认格式,只要没有给出明确的格式,就将其用作输出格式。

    如果你也想使用时间部分,你的目标列需要是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

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多