You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将VARCHAR存储的ISO格式UTC datetime转为DATE类型日期时间

VARCHAR类型ISO UTC时间戳转常规日期时间类型实现方案

注意:多数数据库的纯DATE类型仅存储年、月、日维度信息,不支持时分秒保留。如果需要输出2021-04-22 17:06:59这类带时间的结果,需要使用数据库对应的日期时间类型(如DATETIME、TIMESTAMP)存储,而非纯DATE类型。

原VARCHAR存储值为标准ISO 8601格式UTC时间:'2021-04-22T17:06:59.391Z',以下是各常用数据库的转换写法:

MySQL 环境

  • 用嵌套内置函数处理字符串后解析为DATETIME类型即可,无额外依赖:
    SELECT STR_TO_DATE(
      -- 逐次移除字符串中的T分隔符、Z时区标识、毫秒值
      REPLACE(
        REPLACE(
          REPLACE(your_varchar_col, 'T', ' '),
          'Z', ''
        ),
        CONCAT('.', SUBSTRING_INDEX(your_varchar_col, '.', -1)),
        ''
      ),
      -- 按标准格式解析为日期时间类型
      '%Y-%m-%d %H:%i:%s'
    ) AS converted_datetime
    FROM your_table;
    
  • 转换后输出值天然匹配yyyy-MM-dd HH:mm:ss格式;如果有跨时区展示需求,可额外搭配CONVERT_TZ()函数调整为业务所在时区。

PostgreSQL 环境

  • 适配ISO格式的内置解析能力,写法更简洁:
    SELECT TO_TIMESTAMP(your_varchar_col, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')::TIMESTAMP AS converted_datetime
    FROM your_table;
    
  • 转换后自动去除毫秒值和时区标识,得到不带时区的标准日期时间值。

SQL Server 环境

  • 用带格式代码的类型转换函数直接处理:
    SELECT CONVERT(DATETIME, your_varchar_col, 127) AS converted_datetime
    FROM your_table;
    
  • 格式代码127专门适配带T、Z后缀的ISO 8601 UTC时间字符串,转换后输出完全匹配要求的格式。

内容的提问来源于stack exchange,提问作者Abhijeet Deshmukh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 19:06:03