【问题标题】:Convert VARCHAR a column in SQL to datetime format?将 SQL 中的 VARCHAR 列转换为日期时间格式?
【发布时间】:2020-07-19 22:18:58
【问题描述】:

时间(varchar)

2020-07-19T02:28:22.729Z
2020-07-19T02:48:33.979Z
2020-07-19T02:48:48.250Z
2020-07-19T02:53:24.307Z
2020-07-19T02:53:48.278Z

我想在 ibm cloud 中将此 columntime(varchar) 更改为日期时间格式?

【问题讨论】:

  • 我删除了不一致的数据库标签。请标记您真正使用的数据库。
  • 所有数据库都有一堆字符串、转换/转换和日期时间函数,可以让您完成您正在寻找的内容,请查看您的数据库产品的文档。

标签: sql date db2 cloud ibm-cloud


【解决方案1】:

MySQL和SQL Server(原标签)都理解这种格式,所以可以使用:

cast('2020-07-19T02:28:22.729Z' as datetime)

在两个数据库中,或使用列名:

cast(time as datetime)

【讨论】:

    【解决方案2】:

    大概你想把你的字符串变成timestamp而不是date,因为它包含毫秒。在 DB2 中,您可以为此使用 to_timestamp()。您需要先删除中间的'T',然后再删除后面的'Z'

    应该这样做:

    to_timestamp(
        replace(replace('2020-07-19T02:28:22.729Z', 'T', ' '), 'Z', ' '),
        'yyyy-mm-dd hh24:mi:ss.ff3'
    )
    

    Demo on DB Fiddle

    select to_timestamp(
        replace(replace('2020-07-19T02:28:22.729Z', 'T', ' '), 'Z', ' '),
        'yyyy-mm-dd hh24:mi:ss.ff3'
    ) ts from sysibm.sysdummy1
    
    | TS | | -------------------------------------------: | | 2020-07-19 02:28:22.729000000000 |

    【讨论】:

    • 如何从 mu 另一列检索时间,我正在使用此查询“select to_timestamp(replace(replace('Select "time" from QUAKE', 'T', ''), ' Z', ' '), 'yyyy-mm-dd hh24:mi:ss.ff3' ) 来自 sysibm.sysdummy1 的 ts”我收到类似“错误消息“从 QUAKE 选择“时间””无法使用格式解释TIMESTAMP_FORMAT 函数的字符串“yyyy-mm-dd hh24:mi:ss.ff3”.. SQLCODE=-20448, SQLSTATE=22007, DRIVER=4.26.14 了解有关此错误的更多信息”
    【解决方案3】:

    试试这个:

    /*
    WITH QUAKE (time) AS
    (
    VALUES
      '2020-07-19T02:28:22.729Z'
    , '2020-07-19T02:48:33.979Z'
    , '2020-07-19T02:48:48.250Z'
    , '2020-07-19T02:53:24.307Z'
    , '2020-07-19T02:53:48.278Z'
    )
    */
    SELECT TIMESTAMP(TRANSLATE(time, ' ', 'TZ'))
    FROM QUAKE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      相关资源
      最近更新 更多