首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 字符串轉日期函數 STR_TO_DATE 詳解與常用格式符速查表

     編輯:MySQL 綜合教學

核心用法

MySQL 中使用 STR_TO_DATE(str, format) 將符合指定格式的字符串轉換為 DATE、DATETIME 或 TIME 類型。這在導入異構數據、ETL 清洗、動態構建查詢條件等場景極為常用。

實戰示例

某業務表 T_TGS_ALARMED 的 BJSJ (報警時間) 字段為 DATETIME 類型,需插入格式為 'dd-MM-yyyy HH:mm:ss' 的字符串:

INSERT INTO T_TGS_ALARMED (
    XH, HPZL, HPHM, BJSJ, BJLX, BJYY, KKID, DDBH, FXBH, CDBH, CLBJ, CJJG, CLRQ, CLRY, CLYJ, GXSJ, BZ
) VALUES (
    '1603291112277032122172442', '01', '魯N89728',
    STR_TO_DATE('29-03-2016 16:28:44', '%d-%m-%Y %H:%i:%s'),
    '8', '黃牌車輛在該路段上禁止行駛!', '201409021080', '201409021079', '02', 1, '0', '371400000000',
    NULL, NULL, NULL,
    STR_TO_DATE('29-03-2016 16:28:44', '%d-%m-%Y %H:%i:%s'),
    NULL
);

格式符完整速查表

符號含義示例輸出
%Y年份,4 位數字2016
%y年份,2 位數字16
%m月份,數字 (01~12)03
%c月份,數字 (1~12)3
%d月內天數 (01~31)29
%e月內天數 (1~31)29
%H小時,24 制 (00~23)16
%k小時,24 制 (0~23)16
%h / %I小時,12 制 (01~12)04
%l小時,12 制 (1~12)4
%i分鐘 (00~59)28
%S / %s秒 (00~59)44
%pAM 或 PMPM
%r12 制時間 (hh:mm:ss AM/PM)04:28:44 PM
%T24 制時間 (hh:mm:ss)16:28:44
%W星期全稱Tuesday
%a星期縮寫Tue
%w星期索引 (0=Sunday ~ 6=Saturday)2
%U周數 (00~53),Sunday 為周首13
%u周數 (00~53),Monday 為周首13
%j年內天數 (001~366)089
%b月份縮寫Mar
%%字面字符 %%

常見陷阱與技巧

  • 格式必須完全匹配:字符串與 format 不一致會返回 NULL 並產生 Warning,可用 SHOW WARNINGS; 排查。
  • 配合 DATE_FORMAT() 反向操作:日期 → 字符串用 DATE_FORMAT(date, format)。
  • 時區無關:STR_TO_DATE 不涉及時區轉換,單純按字面解析。
  • 性能提示:大批量導入時,建議在應用層完成解析再寫入 DATETIME,減少數據庫 CPU 開銷。

總結

STR_TO_DATE 是 MySQL 處理非標準日期字符串的利器,掌握上述格式符即可應對 99% 的業務場景。建議將速查表收藏備用,遇到「日期格式不匹配」報錯時快速對照修正。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved