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

如何在SQL中插入带时区及毫秒的指定DateTime值?

如何在SQL中插入带时区与毫秒的DateTime值

你已经掌握用TO_DATE('12/12/2020', 'DD/MM/YYYY')插入纯日期的方法,针对你要插入的特定值 1/21/2020 8:30:53.527000 AM +00:00(含毫秒、时区信息),不同SQL数据库的处理方式如下:

  • Oracle数据库
    Oracle中处理带时区的时间戳需使用TO_TIMESTAMP_TZ函数,格式模板要完全匹配目标字符串的结构:

    INSERT INTO 你的表名(时间字段名)
    VALUES (TO_TIMESTAMP_TZ('1/21/2020 8:30:53.527000 AM +00:00', 'MM/DD/YYYY HH:MI:SS.FF6 AM TZR'));
    

    模板说明:MM/DD/YYYY对应月/日/年,HH:MI:SS.FF6处理时分秒+6位毫秒,AM匹配上午标识,TZR匹配时区信息。

  • PostgreSQL数据库
    PostgreSQL支持两种方式,既可以用函数指定格式,也可以直接将字符串转为带时区的时间戳类型:

    -- 方法1:用TO_TIMESTAMP_TZ指定格式
    INSERT INTO 你的表名(时间字段名)
    VALUES (TO_TIMESTAMP_TZ('1/21/2020 8:30:53.527000 AM +00:00', 'MM/DD/YYYY HH:MI:SS.US AM TZ'));
    
    -- 方法2:直接类型转换(PostgreSQL可自动识别该格式)
    INSERT INTO 你的表名(时间字段名)
    VALUES ('1/21/2020 8:30:53.527000 AM +00:00'::TIMESTAMPTZ);
    
  • MySQL数据库
    MySQL的TIMESTAMP(6)或DATETIME(6)类型支持存储6位毫秒值,带时区场景可通过CONVERT_TZ函数转换:

    -- 若字段为TIMESTAMP(6),可直接插入UTC格式字符串(自动转换为会话时区)
    INSERT INTO 你的表名(时间字段名)
    VALUES ('2020-01-21 08:30:53.527000');
    
    -- 从原始格式转换并调整时区
    INSERT INTO 你的表名(时间字段名)
    VALUES (CONVERT_TZ(STR_TO_DATE('1/21/2020 8:30:53.527000 AM', '%m/%d/%Y %h:%i:%s.%f %p'), '+00:00', @@session.time_zone));
    

内容的提问来源于stack exchange,提问作者Tiago Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:35:22