SQL 方言通

首页 / 工具 / 日期格式符转换器

日期格式符转换器

各数仓引擎的日期格式符分成四种写法,迁移时很容易把月和分钟、12 小时制和 24 小时制写混。输入一个格式字符串,下面会列出每个引擎的写法,并标出容易出错的地方。

识别为:Java 风格

按示例时间 2026-03-05 14:07:09.123456(星期四) 输出:2026-03-05 14:07:09

引擎格式符格式化解析字符串提示
MaxComputeyyyy-mm-dd hh:mi:ss TO_CHAR(dt, 'yyyy-mm-dd hh:mi:ss')TO_DATE(str, 'yyyy-mm-dd hh:mi:ss')DATE_FORMAT 开启 Hive 兼容模式后使用 Java 风格。
HologresYYYY-MM-DD HH24:MI:SS TO_CHAR(ts, 'YYYY-MM-DD HH24:MI:SS')TO_TIMESTAMP(str, 'YYYY-MM-DD HH24:MI:SS')
StarRocks%Y-%m-%d %H:%i:%s DATE_FORMAT(dt, '%Y-%m-%d %H:%i:%s')STR_TO_DATE(str, '%Y-%m-%d %H:%i:%s')需要 Java 风格时可以用 jodatime_format。
Doris%Y-%m-%d %H:%i:%s DATE_FORMAT(dt, '%Y-%m-%d %H:%i:%s')STR_TO_DATE(str, '%Y-%m-%d %H:%i:%s')
Hiveyyyy-MM-dd HH:mm:ss date_format(ts, 'yyyy-MM-dd HH:mm:ss')unix_timestamp(str, 'yyyy-MM-dd HH:mm:ss')Hive 4.0 起可以用 hive.datetime.formatter 切换底层实现,之前固定使用 SimpleDateFormat。
Spark SQLyyyy-MM-dd HH:mm:ss date_format(ts, 'yyyy-MM-dd HH:mm:ss')to_timestamp(str, 'yyyy-MM-dd HH:mm:ss')Spark 的格式符表里没有 Y、u、w 这几个字母。
Flink SQLyyyy-MM-dd HH:mm:ss DATE_FORMAT(ts, 'yyyy-MM-dd HH:mm:ss')TO_TIMESTAMP(str, 'yyyy-MM-dd HH:mm:ss')格式符兼容 Java SimpleDateFormat。

四种写法

写法引擎例子
Java 风格Hive、Spark、Flinkyyyy-MM-dd HH:mm:ss
MySQL 风格StarRocks、Doris%Y-%m-%d %H:%i:%s
PostgreSQL 风格HologresYYYY-MM-DD HH24:MI:SS
MaxCompute 风格MaxComputeyyyy-mm-dd hh:mi:ss

格式符对照表

示例时间是 2026-03-05 14:07:09.123456(星期四)。MaxCompute 列中带 % 的写法只有 TO_CHAR 支持,TO_DATE 只认 yyyy、mm、dd、hh、mi、ss 和 ff3。

含义示例Java 风格MySQL 风格PostgreSQL 风格MaxCompute 风格
四位年2026yyyy%YYYYYyyyy
两位年26yy%yYY%y
月,补零03MM%mMMmm
月,不补零3M%cFMMM—
英文月份缩写MarMMM%bMon%b
英文月份全称MarchMMMM%MFMMonth%B
日,补零05dd%dDDdd
日,不补零5d%eFMDD%e
一年中的第几天064DDD%jDDD%j
24 小时制小时,补零14HH%HHH24hh
24 小时制小时,不补零14H%kFMHH24—
12 小时制小时,补零02hh%hHH12%I
12 小时制小时,不补零2h%lFMHH12%l
分钟07mm%iMImi
秒09ss%sSSss
毫秒(3 位)123SSS—MSff3
微秒(6 位)123456SSSSSS%fUS—
上午或下午PMa%pAM%p
英文星期缩写ThuEEE%aDy%a
英文星期全称ThursdayEEEE%WFMDay%A

常见错误

相关函数:DATE_FORMAT · TO_CHAR · TO_DATE · FROM_UNIXTIME · UNIX_TIMESTAMP

依据

格式符整理自以下官方文档。转换只处理常用格式符,时区、周序号等格式符不在转换范围内,会原样保留并给出提示。