MariaDB STR_TO_DATE() 函数的基础用法与实例

MariaDB STR_TO_DATE() 函数用来根据指定的格式将字符串转换为日期时间类型。

发布于

MariaDB STR_TO_DATE() 函数用来根据指定的格式将字符串转换为日期时间类型。它通常用于将字符串形式的日期和时间值转换为适合存储在日期/时间数据类型列中的格式。此函数在处理非标准日期格式或来自不同区域的日期时非常有用。

语法

MairaDB STR_TO_DATE() 函数的语法如下:

STR_TO_DATE(str, format)
  • str:要转换的字符串。
  • format:描述字符串 str 格式的字符串。

该函数返回一个 DATETIME 值,如果任何参数是 NULL,则返回 NULL。如果格式字符串不合法或者字符串值无法与格式匹配,则返回 NULL

实例

将字符串转换为日期时间格式

本实例将展示如何使用 STR_TO_DATE() 函数将字符串 '2023-03-14 12:34:56' 转换为日期时间格式。

SELECT STR_TO_DATE('2023-03-14 12:34:56', '%Y-%m-%d %H:%i:%s');

以下是该语句的输出:

+---------------------------------------------------------+
| STR_TO_DATE('2023-03-14 12:34:56', '%Y-%m-%d %H:%i:%s') |
+---------------------------------------------------------+
| 2023-03-14 12:34:56                                     |
+---------------------------------------------------------+

该示例使用格式字符串 '%Y-%m-%d %H:%i:%s' 指定输入字符串的格式,其中 %Y 表示四位数年份,%m 表示两位数月份,等等。

处理不同区域的日期格式

本实例将展示如何使用 STR_TO_DATE() 函数处理不同区域的日期格式。

DROP TABLE IF EXISTS dates;
CREATE TABLE dates (date_string VARCHAR(20));
INSERT INTO dates VALUES
  ('03/14/2023'), ('14/03/2023');

SELECT
  date_string,
  STR_TO_DATE(date_string, '%m/%d/%Y') AS us_format,
  STR_TO_DATE(date_string, '%d/%m/%Y') AS uk_format
FROM dates;

以下是该语句的输出:

+-------------+------------+------------+
| date_string | us_format  | uk_format  |
+-------------+------------+------------+
| 03/14/2023  | 2023-03-14 | NULL       |
| 14/03/2023  | NULL       | 2023-03-14 |
+-------------+------------+------------+

在这个示例中,我们创建了一个名为 dates 的表,其中包含一个 date_string 列。然后,我们插入了两个日期字符串,一个采用美国格式(月/日/年),另一个采用英国格式(日/月/年)。我们使用 STR_TO_DATE() 函数将这些日期字符串转换为 DATE 值,并分别指定了美国和英国的格式字符串。

处理不同的时间格式

本实例将展示如何使用 STR_TO_DATE() 函数处理不同的时间格式。

DROP TABLE IF EXISTS times;
CREATE TABLE times (time_string VARCHAR(20));
INSERT INTO times VALUES
  ('12:34:56 PM'), ('2:34:56 AM');

SELECT
  time_string,
  STR_TO_DATE(CONCAT('2023-03-14 ', time_string), '%Y-%m-%d %h:%i:%s %p') AS time_value
FROM times;

以下是该语句的输出:

+-------------+---------------------+
| time_string | time_value          |
+-------------+---------------------+
| 12:34:56 PM | 2023-03-14 12:34:56 |
| 2:34:56 AM  | 2023-03-14 02:34:56 |
+-------------+---------------------+

在这个示例中,我们创建了一个名为 times 的表,其中包含一个 time_string 列。然后,我们插入了两个不同格式的时间字符串。我们使用 STR_TO_DATE() 函数将这些时间字符串转换为 DATETIME 值,并指定了格式字符串 '%Y-%m-%d %h:%i:%s %p',其中 %h 表示 12 小时制时间,%p 表示 AM/PM。我们还使用 CONCAT() 函数将日期和时间字符串合并为一个字符串。

相关函数

以下是几个与 MairaDB STR_TO_DATE() 相关的几个函数:

  • MariaDB DATE_FORMAT() 函数用来将日期时间值格式化为字符串。
  • MariaDB DATE() 函数用来提取日期时间值中的日期部分。
  • MariaDB TIME() 函数用来提取日期时间值中的时间部分。
  • MariaDB TIMESTAMP() 函数用来返回当前的日期和时间。

结论

MariaDB STR_TO_DATE() 函数是一个非常有用的函数,可以将字符串转换为日期时间类型。它支持各种不同的日期和时间格式,使得处理来自不同区域或系统的数据变得更加方便。通过合理使用格式字符串,我们可以灵活地解析各种形式的日期和时间字符串。同时,与此函数相关的其他函数也为日期和时间的处理提供了更多选择。