將字符串按指定格式解析為 DATETIME/DATE 類型,支援格式化符號與 DATE_FORMAT 一致。
STR_TO_DATE(str, format_mask)
-- 表結構:class_time VARCHAR(20) 存 '20170101 12:00:00'
SELECT
STR_TO_DATE(class_time, '%Y%m%d %H:%i:%s') AS parsed_time
FROM a
ORDER BY parsed_time DESC;
| 符號 | 含義 | 範例 |
|---|---|---|
| %Y | 四位年份 | 2024 |
| %m | 兩位月份 | 01~12 |
| %d | 兩位日期 | 01~31 |
| %H | 24制小時 | 00~23 |
| %i | 分鐘 | 00~59 |
| %s | 秒 | 00~59 |
-- ma_datetime VARCHAR2 存 '2024-01-01 12:00:00'
SELECT TO_CHAR(
TO_DATE(ma_datetime, 'yyyy-MM-dd hh24:mi:ss'),
'yyyymmdd'
)
FROM my_task;
ORA-01830;MySQL 可只解析日期部分yyyy vs YYYY),MySQL 不敏感ORDER BY STR_TO_DATE(...),Oracle 需嵌套或用 CTESTR_TO_DATE('abc', '%Y') → NULL,無報錯,需業務層校驗time_zone 系統變量處理dt_col DATETIME GENERATED ALWAYS AS (STR_TO_DATE(str_col, '...')) STORED 並建索引UPDATE t SET dt_col = STR_TO_DATE(str_col, '...') WHERE dt_col IS NULL類型正確,是數據質量的基石;格式統一,是系統互操作的前提。