将类似于Jan 2017,May 2018之类的日期格式转换为MySQL中的完整日期

将类似于Jan 2017,May 2018之类的日期格式转换为MySQL中的完整日期

在数据库的应用中,经常涉及到日期的存储和转换。然而,在实际应用过程中,有时候会遇到一些格式奇怪的日期,如Jan 2017、May 2018等,这样的日期格式难以直接在数据库中进行存储和计算。本文将介绍如何将这样的日期格式转换为MySQL中的完整日期格式。

阅读更多:MySQL 教程

转换方法

方法一:使用STR_TO_DATE函数

STR_TO_DATE函数是MySQL中专门用来将字符串转换为日期的函数。

其语法如下:

STR_TO_DATE(str,format)

其中,str是要转换的字符串,format是待转换的日期格式。

对于如Jan 2017这样的日期格式,其format格式为’%M %Y’。%M表示月份的全名,%Y表示四位数的年份。

例如,将Jan 2017转换为MySQL中的完整日期格式:

SELECT STR_TO_DATE('Jan 2017','%M %Y');

结果如下:

2017-01-01

方法二:使用CONCAT和STR_TO_DATE函数

有时候,我们需要将日期格式中的月份和年份拼接起来,然后再使用STR_TO_DATE函数进行转换,这时可以使用CONCAT函数将两个字符串合并在一起。

其语法如下:

CONCAT(str1,str2,...)

其中,str1,str2,…是要合并的字符串。

例如,将May 2018转换为MySQL中的完整日期格式:

SELECT STR_TO_DATE(CONCAT('01 ', 'May ', '2018'), '%d %M %Y');

结果如下:

2018-05-01

完整示例

下面是一个完整的示例,将包含Jan 2017、May 2018等日期格式的数据表进行转换:

CREATE TABLE `test_dates` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date_str` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

INSERT INTO `test_dates` (`date_str`) VALUES
('Jan 2017'),
('Feb 2018'),
('Mar 2019'),
('Apr 2020'),
('May 2021');

SELECT
    date_str,
    STR_TO_DATE(date_str, '%M %Y') AS full_date
FROM
    test_dates;

结果如下:

| date_str |  full_date  |
|----------|-------------|
| Jan 2017 |  2017-01-01 |
| Feb 2018 |  2018-02-01 |
| Mar 2019 |  2019-03-01 |
| Apr 2020 |  2020-04-01 |
| May 2021 |  2021-05-01 |

结论

通过本文介绍的两种方法,能够轻松将类似于Jan 2017、May 2018之类的日期格式转换为MySQL中的完整日期格式。因此,在实际应用中,我们可以将数据表中的日期进行转换,方便后续的存储和计算。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

MySQL 教程