数仓 SQL 函数对照

首页 / 日期

TO_DATE 字符串转日期

TO_DATE 在不同引擎里有两种含义:MaxCompute、Hologres、Spark 和 Flink 用它按格式解析字符串;Hive、StarRocks 和 Doris 的 TO_DATE 只取日期部分,不能按格式解析。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 TO_DATE(date_str[, format]) 不传 format 时返回 DATE,传入 format 时返回 DATETIME。格式符为 yyyy、mm、dd、hh、mi、ss、ff3,format 必须包含 yyyy。 官方文档
Hologres 支持 TO_DATE(text, format) PostgreSQL 风格格式符,例如 YYYY-MM-DD。文档写的返回类型是 TEXT,但示例结果是日期,建议实测。 官方文档
StarRocks 需改写 str_to_date(str, format) StarRocks 的 to_date 只接受 DATETIME 并取日期部分,不能解析字符串。按格式解析用 str_to_date,格式符与 date_format 相同;格式只含日期时返回 DATE,否则返回 DATETIME。 官方文档
Doris 需改写 str_to_date(str, format) Doris 的 TO_DATE 只接受 DATETIME 并取日期部分。按格式解析用 STR_TO_DATE,返回 DATETIME,也接受 yyyyMMdd 等三种格式。 官方文档
Hive 需改写 to_date(from_unixtime(unix_timestamp(str, pattern))) Hive 的 to_date 只返回时间戳字符串的日期部分,没有格式参数。返回类型在 Hive 2.1.0 之前是 string,之后是 date。 官方文档
Spark SQL 支持 to_date(date_str[, fmt]) Spark 1.5.0 起提供。解析失败返回 NULL,省略 fmt 时按 CAST 规则转换。 官方文档
Flink SQL 支持 TO_DATE(string1[, string2]) 默认格式为 'yyyy-MM-dd'。 官方文档

迁移注意事项

示例

解析 yyyyMMdd 格式的日期字符串

MaxCompute
SELECT TO_DATE('20261013', 'yyyymmdd');
Hologres
SELECT TO_DATE('20261013', 'YYYYMMDD');
StarRocks
SELECT str_to_date('20261013', '%Y%m%d');
Hive
SELECT to_date(from_unixtime(unix_timestamp('20261013', 'yyyyMMdd')));
Spark SQL
SELECT to_date('20261013', 'yyyyMMdd');
Flink SQL
SELECT TO_DATE('20261013', 'yyyyMMdd');

同类函数

最后核对日期: