当前位置:   article > 正文

[Mysql] STR_TO_DATE函数_strtodate函数

strtodate函数

STR_TO_DATE函数用于将字符串转变为日期/时间值

STR_TO_DATE函数与DATE_FORMAT函数的作用是相反的

语法格式

STR_TO_DATE(str,format)

srt:要格式化为日期的字符串(输入字符串) 

format:要使用的格式字符串

如果不能按照format解析str,STR_TO_DATE函数将返回NULL

如果其中任何一个参数为NULL,STR_TO_DATE函数将返回NULL

提示Tips:用于构建日期格式字符串的说明符及其含义如下表所示

限定符含义
%a三个字符缩写的工作日名称,例如: MonTueWed
%b三个字符缩写的月份名称,例如: JanFebMar
%c以数字表示的月份值,例如: 1, 2, 3…12
%D以数字表示月份中的某天(可理解为一个月之中的第几天),后跟英文后缀,例如: 1st2nd,3rd
%d以数值表示月份中的某天,如果是小于10的数字,该数字需要加前导0, 例如: 00,01,02, …31
%e以数值表示月份中的某天,小于10的数字不需要加前导0,例如: 1,2,… 31
%f微秒,范围在(000000到999999)
%H24小时格式的小时,前导加0,例如: 00,01…23
%h12小时格式的小时,前导加0,例如: 00,01 … 12
%Ⅰ与%h相同
%i分钟,范围在00到59
%j一年中的的第几天,前导加0,例如: 001,002,… 366
%k24小时格式的小时,无前导0,例如: 0,1,2 … 23
%l12小时格式的小时,无前导0,例如: 1,2 … 12
%M月份全名称,例如: January, February…December
%m以数值形式显示的月份名称,前导加0,例如: 01,02,… 12
%pAM或PM,取决于其他时间说明符
%r表示时间,12小时格式hh:mm:ss AM/PM
%S秒,前导加0,例如: 00,01…59
%s与%S相同
%T表示时间,24小时格式hh:mm:ss
%U表示周数,星期日为一周的第一天,例如:00,01,02 … 53时,前导0的周数
%u表示周数,星期一为一周的第一天,例如:00,01,02 … 53时,前导0的周数
%V与%U相同,它与%X一起使用
%v与%u相同,它与%x一起使用
%W工作日的全称,例如: Sunday, Monday,…, Saturday
%w工作日,以数字来表示(0 = 星期日,6 = 星期六)
%X周的四位数表示年份,第一天是星期日,经常与%V一起使用
%x周的四位数表示年份,第一天是星期一,经常与%v一起使用
%Y表示年份,四位数,例如: 2000,2001,…等
%y表示年份,两位数,例如: 00,01,…等
%%将百分比(%)字符添加到输出

常用的的format格式

常用的格式字符串示例结果
%Y/%m/%dSELECT STR_TO_DATE('2022/11/01','%Y/%m/%d');2022-11-01
%Y-%m-%dSELECT STR_TO_DATE('2022-11-02','%Y-%m-%d');2022-11-02
%e/%c/%YSELECT STR_TO_DATE('03/11/2022','%e/%c/%Y');2022-11-03
%d/%m/%Y %H:%iSELECT STR_TO_DATE('04/11/2022 13:30','%d/%m/%Y %H:%i');2022-11-04 13:30:00
%b %d %Y %h:%i %pSELECT STR_TO_DATE('Nov 05 2022 02:30 PM','%b %d %Y %h:%i %p');2022-11-05 14:30:00
%Y-%m-%d %TSELECT STR_TO_DATE('2022-11-06 17:29:30','%Y-%m-%d %T');2022-11-06 17:29:30
%W %D %M %Y %TSELECT STR_TO_DATE('Monday 7th November 2022 13:45:30','%W %D %M %Y %T');2022-11-07 13:45:30
%M,%e,%YSELECT STR_TO_DATE('November,8,2022', '%M,%e,%Y');2022-11-08
%W %M %e %YSELECT STR_TO_DATE('Wednesday November 09 2022', '%W %M %e %Y');2022-11-09
%Y,%m,%d %h,%i,%sSELECT STR_TO_DATE('2022,11,10 12,12,12', '%Y,%m,%d %h,%i,%s');2022-11-10 00:12:12

练习案例

将字符串转换为DATE值 

  1. -- 2022-05-25
  2. SELECT STR_TO_DATE('25,5,2022','%d,%m,%Y');
  3. -- 2022-05-26
  4. SELECT STR_TO_DATE('2022-05-26 11:30:00','%Y-%m-%d');
  5. -- 2022-08-05
  6. SELECT STR_TO_DATE('August,5,2022', '%M,%e,%Y');
  7. -- 2022-08-10
  8. SELECT STR_TO_DATE('August 10 2022', '%M %d %Y');
  9. -- 2022-08-14
  10. SELECT STR_TO_DATE('Monday, August 14, 2022', '%W,%M %e, %Y');

将字符串转换为DATETIME值 

  1. -- 2022-05-25 11:30:00
  2. SELECT STR_TO_DATE('20220525 1130','%Y%m%d %h%i');
  3. -- 2022-05-26 11:30:00
  4. SELECT STR_TO_DATE('2022-05-26 11:30:00','%Y-%m-%d %H:%i:%s');
  5. -- 2022-05-27 10:40:10
  6. SELECT STR_TO_DATE('2022,5,27 10,40,10', '%Y,%m,%d %h,%i,%s');

STR_TO_DATE函数在根据格式字符串format解析输入字符串str时,忽略输入字符串str末尾的额外字符

  1. -- 2022-05-25
  2. SELECT STR_TO_DATE('25,5,2022 extra characters','%d,%m,%Y'); 
  3. -- 2022-05-25 11:30:00
  4. SELECT STR_TO_DATE('20220525 1130 extra characters','%Y%m%d %h%i');

如果输入字符串str是非法的,则STR_TO_DATE函数返回NULL

  1. -- NULL
  2. SELECT STR_TO_DATE('2022','%Y');
  3. -- NULL
  4. SELECT STR_TO_DATE('11','%h');
  5. -- NULL
  6. SELECT STR_TO_DATE('1130','%h%i');
  7. -- NULL
  8. SELECT STR_TO_DATE('113005','%h%i%s');
  9. -- NULL
  10. SELECT STR_TO_DATE('August,5,2017', '%M %e %Y');
  11. -- NULL
  12. SELECT STR_TO_DATE('Monday, August 14, 2017', '%W %M %e %Y');
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/582941
推荐阅读
相关标签
  

闽ICP备14008679号