[Mysql] STR_TO_DATE函数

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值 

-- 2022-05-25
SELECT STR_TO_DATE('25,5,2022','%d,%m,%Y');
-- 2022-05-26
SELECT STR_TO_DATE('2022-05-26 11:30:00','%Y-%m-%d');
-- 2022-08-05
SELECT STR_TO_DATE('August,5,2022', '%M,%e,%Y');
-- 2022-08-10
SELECT STR_TO_DATE('August 10 2022', '%M %d %Y');
-- 2022-08-14
SELECT STR_TO_DATE('Monday, August 14, 2022', '%W,%M %e, %Y');

将字符串转换为DATETIME值 

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

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

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

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

-- NULL
SELECT STR_TO_DATE('2022','%Y');
-- NULL
SELECT STR_TO_DATE('11','%h');
-- NULL
SELECT STR_TO_DATE('1130','%h%i');
-- NULL
SELECT STR_TO_DATE('113005','%h%i%s');
-- NULL
SELECT STR_TO_DATE('August,5,2017', '%M %e %Y');
-- NULL
SELECT STR_TO_DATE('Monday, August 14, 2017', '%W %M %e %Y');
  • 26
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值