首页/数据/SQL 速查/STR_TO_DATE 字符串转日期
函数速查60 条

STR_TO_DATE 字符串转日期

把字符串按格式解析为日期/时间值:导入外部数据、清洗脏日期列时使用;解析失败 MySQL 返回 NULL 并告警,PostgreSQL 直接报错。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT STR_TO_DATE('06/01/2024', '%m/%d/%Y');       -- 2024-06-01
SELECT STR_TO_DATE('2024-06-01 09:30', '%Y-%m-%d %H:%i');
-- 解析失败返回 NULL 并产生 warning
SELECT STR_TO_DATE('2024-13-01', '%Y-%m-%d');       -- NULL

PostgreSQL

PostgreSQL
SELECT to_date('06/01/2024', 'MM/DD/YYYY');         -- 2024-06-01
SELECT to_timestamp('2024-06-01 09:30', 'YYYY-MM-DD HH24:MI');
-- 非法输入直接抛错,可用 CASE/正则先过滤
MySQLSTR_TO_DATE(str, fmt);不合法输入返回 NULL
PostgreSQLto_date / to_timestamp;输入不匹配抛 invalid value 错误
注意解析出的 DATE 与 DATETIME 取决于 fmt 是否含时间部分

易错点

  • STR_TO_DATE 解析失败返回 NULL 并产生 warning,批量导入后要统计结果里的 NULL 数量,确认没有静默丢弃
  • 把解析函数直接写进 WHERE 对列做过滤会全表扫描,导入期先落库成日期列再查询

数据来源与参考

  • MySQL 8.0 Reference Manual · STR_TO_DATE
  • PostgreSQL Documentation · Data Type Formatting Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌