MariaDB 函数

MariaDB STR_TO_DATE() 函数采用字符串并返回由格式掩码指定的日期或日期时间值。根据参数,此函数返回以下内容:

  • 如果字符串同时包含有效的日期和时间部分,则返回日期时间值。
  • 如果字符串仅包含有效的日期部分,则返回日期值。
  • 如果字符串仅包含有效的时间部分,则返回时间值。
  • 如果无法使用 format_mask 提取有效的日期和时间部分,则返回 NULL 值。

语法

STR_TO_DATE(string, format_mask) 

参数

string必填。 指定要格式化为日期的字符串值。
format_mask必需。 指定应用于字符串的格式。 以下是此参数的选项列表。 它可以用于多种组合。

描述
%a工作日名称缩写(周日至周六)
%b月份名称缩写(Jan 到 Dec)
%c月份为数值(0 到 12)
%D以数值表示的月份中的第几天,后跟后缀(第一、第二、第三……)
%d数值形式的月份中的某天(01 到 31)
%e以数值表示的月份中的某天(0 到 31)
%f微秒(000000 到 999999)
%H小时(00 至 23)
%h小时 (00 至 12)
%I小时(00 至 12)
%i分钟(00 到 59)
%j一年中的某天(001 到 366)
%k小时(00 到 23)
%l小时(1 至 12)
%M月份名称完整(一月至十二月)
% m月份名称作为数值(00 到 12)
%pAM 或 PM
%r12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM)
%S秒(00 到 59)
%s秒(00 到 59)
%T24 小时格式的时间 (hh:mm:ss)
%U星期日为一周第一天的星期(00 到 53)
%u星期一为一周第一天的星期 (00 到 53)
%V星期日是一周第一天的周(01 到 53)。 与 %X
%vWeek 一起使用,其中星期一是一周的第一天(01 到 53)。 与 %X 一起使用
%W完整的工作日名称(周日至周六)
%w星期日=0 且星期六=6 的星期几
%X星期日所在星期的年份 是一周的第一天。 与 %V
%x年份一起使用,其中星期一是一周的第一天。 与 %v
%Y使用 4 位数字的年份
%y年份为 2 位数字值
%#对于 STR_TO_DATE(),跳过所有数字。
%。对于 STR_TO_DATE(),跳过所有标点字符。
%@对于 STR_TO_DATE(),跳过所有字母字符。
%%文字 % 字符

返回值

返回格式掩码指定的时间或日期或日期时间值。

示例 1 :

下面的示例显示了 STR_TO_DATE() 函数的用法。

SELECT STR_TO_DATE('August 18 2018', '%M %d %Y');
Result: '2018-08-18'

SELECT STR_TO_DATE('August 18, 2018', '%M %d, %Y');
Result: '2018-08-18'

SELECT STR_TO_DATE('Saturday, August 18, 2018', '%W, %M %d, %Y');
Result: '2018-08-18'

SELECT STR_TO_DATE('08,18,2018', '%m,%d,%Y');
Result: '2018-08-18'

SELECT STR_TO_DATE('8,18,2018,10,30', '%m,%d,%Y,%h,%i');
Result: '2018-08-18 10:30:00'

SELECT STR_TO_DATE('10,30,45', '%h,%i,%s');
Result: '10:30:45'

SELECT STR_TO_DATE('August1234 18, 2018', '%M%# %d, %Y');
Result: '2018-08-18'

SELECT STR_TO_DATE('August! 18, 2018', '%M%. %d, %Y');
Result: '2018-08-18' 

示例 2:

考虑名为 Employee 的数据库表,包含以下记录:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon25May 25, 2018
2MarryNew York24October 15, 2018
3JoParis27June 9, 2019
4KimAmsterdam30September 21, 2019
5RameshNew Delhi28October 25, 2019

在下面的查询中,STR_TO_DATE() 函数用于格式化字符串值Date_of_Joining 列:

SELECT *, 
STR_TO_DATE(Date_of_Joining, '%M %d, %Y') AS STR_TO_DATE_Value
FROM Employee; 

这将产生类似于以下内容的结果:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon25May 25, 2018
2MarryNew York24October 15, 2018
3JoParis27June 9, 2019
4KimAmsterdam30September 21, 2019
5RameshNew Delhi28October 25, 2019