MySQL - STR_TO_DATE() 函数



MySQL 的STR_TO_DATE()函数将字符串格式的日期转换为所需的日期格式。

此函数接受字符串形式的日期值和格式字符串作为参数,从给定格式的给定字符串中提取 DATE、TIME 或 DATETIME 值,并返回结果。

某些字符具有预定义的含义,您可以使用它们来创建格式字符串参数。它们是 -

格式 描述
%a 星期几名称 (Sun..Sat)
%b 月份名称 (Jan..Dec)
%c 月份,数字 (0..12)
%D 带英文后缀的月份中的某一天 (0th, 1st, 2nd, 3rd, ...)
%d 月份中的某一天,数字 (00..31)
%e 月份中的某一天,数字 (0..31)
%f 微秒 (000000..999999)
%H 小时 (00..23)
%h 小时 (01..12)
%I 小时 (01..12)
%i 分钟,数字 (00..59)
%j 一年中的某一天 (001..366)
%k 小时 (0..23)
%l 小时 (1..12)
%M 月份名称 (January..December)
%m 月份,数字 (00..12)
%p AM 或 PM
%r 时间,12 小时制 (hh:mm:ss 后跟 AM 或 PM)
%S 秒 (00..59)
%s 秒 (00..59)
%T 时间,24 小时制 (hh:mm:ss)
%U 星期 (00..53),其中星期日是星期的第一天;WEEK() 模式 0
%u 星期 (00..53),其中星期一是星期的第一天;WEEK() 模式 1
%V 星期 (01..53),其中星期日是星期的第一天;WEEK() 模式 2;与 %X 一起使用
%v 星期 (01..53),其中星期一是星期的第一天;WEEK() 模式 3;与 %x 一起使用
%W 星期几名称 (Sunday..Saturday)
%w 星期几 (0=星期日..6=星期六)
%X 星期日是星期的第一天的星期的年份,数字,四位数字;与 %V 一起使用
%x 星期一是星期的第一天的星期的年份,数字,四位数字;与 %v 一起使用
%Y 年份,数字,四位数字
%y 年份,数字 (两位数字)
%% 字面量 % 字符

语法

以下是 MySQL STR_TO_DATE() 函数的语法 -

STR_TO_DATE(str,format)

参数

此方法接受两个参数。下面描述了相同的内容 -

  • str: 包含日期或时间信息的字符串。

  • format: 字符串中日期或时间信息表示的格式。

返回值

此函数根据提供的字符串和格式返回 MySQL 日期或时间值。

示例

在以下查询中,我们使用STR_TO_DATE()函数将给定字符串转换为日期格式 -

SELECT STR_TO_DATE('5th Saturday September 2023', '%D %W %M %Y')
As Result;

输出

这将产生以下结果 -

结果
2023-09-05

示例

以下是此函数的另一个示例 -

SELECT STR_TO_DATE('Sat Sep 05 23', '%a %b %d %y') As Result;

输出

以下是输出 -

结果
2023-09-05

示例

这里,我们使用 STR_TO_DATE() 函数将字符串“20 小时 40 分钟 45 秒”转换为时间格式 -

SELECT STR_TO_DATE('20 Hours 40 Minutes 45 Seconds', '%H Hours %i Minutes %S Seconds')
As Result;

输出

以下是输出 -

结果
20:40:45

示例

以下查询将日期时间字符串转换为 DATETIME 值 -

SELECT STR_TO_DATE('Sep 05 15 10:23:00 PM', '%b %d %y %r')
As Result;

输出

以下是输出 -

结果
2015-09-05 22:23:00

示例

在此示例中,我们使用以下 CREATE TABLE 查询创建了一个名为PLAYERS的表 -

CREATE TABLE PLAYERS(
   ID int,
   NAME varchar(255),
   DOB varchar(255),
   Country varchar(255),
   PRIMARY KEY (ID)
);

现在,我们将使用 INSERT 语句在 MyPlayers 表中插入 7 条记录 -

INSERT INTO PLAYERS VALUES
(1, 'Shikhar Dhawan', '5th December 1981, Saturday', 'India'),
(2, 'Jonathan Trott', '22nd April 1981, Wednesday', 'SouthAfrica'),
(3, 'Kumara Sangakkara', '27th October 1977, Thursday', 'Srilanka'),
(4, 'Virat Kohli', '5th November 1988, Saturday', 'India'),
(5, 'Rohit Sharma', '30th April 1987, Thursday', 'India'),
(6, 'Ravindra Jadeja', '6th December 1988, Tuesday', 'India'),
(7, 'James Anderson', '30th June 1982, Wednesday', 'England');

执行以下查询以获取在上面创建的表中插入的所有记录 -

Select * From PLAYERS;

以下是 PLAYERS 表 -

ID NAME DOB Country
1 Shikhar Dhawan 5th December 1981, Saturday India
2 Jonathan Trott 22nd April 1981, Wednesday Srilanka
3 Kumara Sangakkara 27th October 1977, Thursday Srilanka
4 Virat Kohli 5th November 1988, Saturday India
5 Rohit Sharma 30th April 1987, Thursday India
6 Ravindra Jadeja 30th April 1987, Thursday India
7 James Anderson 30th June 1982, Wednesday England

这里,我们使用 MySQL STR_TO_DATE() 函数将“DOB”值从其当前格式转换为指定格式字符串的新格式。

SELECT ID, NAME, DOB, STR_TO_DATE(DOB, '%D %M %Y, %W')
As Result FROM PLAYERS;

输出

输出显示如下 -

ID NAME DOB 结果
1 Shikhar Dhawan 5th December 1981, Saturday 1981-12-05
2 Jonathan Trott 22nd April 1981, Wednesday 1981-04-22
3 Kumara Sangakkara 27th October 1977, Thursday 1977-10-27
4 Virat Kohli 5th November 1988, Saturday 1988-11-05
5 Rohit Sharma 30th April 1987, Thursday 1987-04-30
6 Ravindra Jadeja 30th April 1987, Thursday 1988-12-06
7 James Anderson 30th June 1982, Wednesday 1982-06-30
广告