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

如何将XML格式的日期转换为合法的SQL datetime格式?

XML ISO 8601 日期转SQL合法datetime格式方案

你需要转换的2021-08-26T00:25:26.737185Z属于ISO 8601标准的UTC时间格式,主流数据库和编程语言都原生支持该格式的解析,无需手动拆分字符串处理,对应解决方案如下:

数据库层面直接转换方案

  • MySQL / MariaDB
    使用STR_TO_DATE函数指定匹配格式即可支持微秒级精度转换:

    SELECT STR_TO_DATE('2021-08-26T00:25:26.737185Z', '%Y-%m-%dT%H:%i:%s.%fZ');
    

    如需转换为本地时区时间,可嵌套CONVERT_TZ函数处理时区偏移。

  • SQL Server
    原生识别该ISO格式,直接写入DATETIME2类型字段即可,无需额外转换:

    INSERT INTO 表名 (日期字段) VALUES ('2021-08-26T00:25:26.737185Z');
    

    若使用旧版本DATETIME类型精度不足,可显式转换:

    SELECT CAST('2021-08-26T00:25:26.737185Z' AS DATETIME2);
    
  • PostgreSQL
    原生支持ISO 8601格式,直接写入TIMESTAMPTZ(带时区时间戳)字段即可,会自动识别末尾的Z标识为UTC时区:

    INSERT INTO 表名 (日期字段) VALUES ('2021-08-26T00:25:26.737185Z'::timestamptz);
    
  • Oracle
    使用TO_TIMESTAMP_TZ函数指定格式完成转换:

    SELECT TO_TIMESTAMP_TZ('2021-08-26T00:25:26.737185Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF"TZR') FROM DUAL;
    

程序层面预转换方案

若你需要在业务代码中先完成格式转换再写入数据库,主流编程语言的处理方式如下:

  • Python:使用datetime内置方法直接解析
    from datetime import datetime
    date_obj = datetime.fromisoformat(xml_date_str.replace('Z', '+00:00'))
    
  • Java:使用Instant类直接解析UTC格式,再转为JDBC兼容的Timestamp对象
    import java.time.Instant;
    import java.sql.Timestamp;
    Timestamp date = Timestamp.from(Instant.parse(xmlDateStr));
    
  • C#:直接用DateTimeOffset解析
    DateTimeOffset date = DateTimeOffset.Parse(xmlDateStr);
    

内容的提问来源于stack exchange,提问作者Maik Hasler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:18:04