📜  MariaDB 中的 DATE_FORMAT()函数(1)

📅  最后修改于: 2023-12-03 14:44:09.111000             🧑  作者: Mango

MariaDB 中的 DATE_FORMAT() 函数

简介

MariaDB 是 MySQL 的一个分支,其内置了许多有用的函数,如 DATE_FORMAT() 函数用于格式化日期并将其以字符串的形式返回。

语法

以下是 DATE_FORMAT() 函数的语法:

DATE_FORMAT(date, format)

其中,date 是一个日期或日期/时间值,format 是需要应用的格式化字符串。

参数

以下是 DATE_FORMAT() 函数的参数:

| 参数 | 描述 | | --- | --- | | date | 需要格式化的日期或日期/时间值。 | | format | 定义日期/时间格式的字符串。 |

日期/时间格式说明符

以下是可以在 format 字符串中使用的日期/时间格式说明符:

| 格式说明符 | 描述 | | --- | --- | | %a | 缩写的星期几名,例如 SunMonTue 等。 | | %b%h | 缩写的月份名,例如 JanFebMar 等。 | | %c | 月份数字,不带前导零,例如 123 等。 | | %d | 月份中的日数,带前导零,例如 010203 等。 | | %e | 月份中的日数,不带前导零,例如 123 等。 | | %f | 微秒,例如 000001123456 等。 | | %H | 小时,24 小时制,带前导零,例如 000102 等。 | | %h%I | 小时,12 小时制,带前导零,例如 010203 等。 | | %i | 分钟,带前导零,例如 000102 等。 | | %j | 年份中的日数,不带前导零,例如 123 等。 | | %k | 小时,24 小时制,不带前导零,例如 012 等。 | | %l | 小时,12 小时制,不带前导零,例如 123 等。 | | %m | 月份,带前导零,例如 010203 等。 | | %M | 完整的月份名,例如 JanuaryFebruaryMarch 等。 | | %p | 上午/下午(针对 12 小时制),例如 AMPM。 | | %r | 时间,12 小时制,带 AM/PM。例如 01:02:03 AM04:05:06 PM 等。 | | %S | 带有前导零的秒数,例如 000102 等。 | | %s | 不带前导零的秒数,例如 012 等。 | | %T | 时间,24 小时制,例如 01:02:0304:05:06。 | | %U | 年份中的周数,以周日为每周的第一天。例如 000102 等。 | | %u | 年份中的周数,以周一为每周的第一天。例如 000102 等。 | | %v | 年份中的周数,根据每周至少包含 4 天来确定(可能属于前一年或后一年)。例如 000102 等。 | | %W | 完整的星期几名,例如 SundayMondayTuesday 等。 | | %w | 数字表示的星期几,0 表示周日,1 表示周一,以此类推。 | | %X | ISO 格式的年份,包括负数(在 BC 时代的年份前面加上负号)。例如 2021-2021 等。 | | %x | ISO 格式的年份,不包括负数。例如 2021。 | | %Y | 四位数的年份,例如 2021。 | | %y | 两位数的年份,例如 21。 | | %Z | 时区偏移量,例如 +08:00-05:00。 | | %z | 无分隔符的时区偏移量,例如 +0800-0500。 | | %% | 百分号,例如 %。 |

示例

让我们看看一些使用 DATE_FORMAT() 函数的示例:

示例 1

假设我们有一个名为 employees 的表,其中包含员工的信息,以及他们的入职日期。以下是表的结构:

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  hire_date DATE
);

INSERT INTO employees (id, name, hire_date)
VALUES
  (1, 'John Doe', '2020-01-01'),
  (2, 'Jane Doe', '2019-07-01'),
  (3, 'Bob Smith', '2018-03-15'),
  (4, 'Alice Jones', '2017-11-30');

现在,我们想要使用 DATE_FORMAT() 函数查询所有员工的姓名和入职日期,格式为 YYYY-MM-DD

以下是查询的代码:

SELECT name, DATE_FORMAT(hire_date, '%Y-%m-%d') AS hire_date_formatted
FROM employees;

输出结果如下:

+-------------+---------------------+
| name        | hire_date_formatted |
+-------------+---------------------+
| John Doe    | 2020-01-01          |
| Jane Doe    | 2019-07-01          |
| Bob Smith   | 2018-03-15          |
| Alice Jones | 2017-11-30          |
+-------------+---------------------+

如上所述,我们使用 %Y-%m-%d 格式说明符来格式化日期。

示例 2

现在,假设我们想要查询所有员工的姓名和入职日期,格式为 YYYY年M月D日 的格式,例如 2021年4月1日

以下是查询的代码:

SELECT name, DATE_FORMAT(hire_date, '%Y年%m月%d日') AS hire_date_formatted
FROM employees;

输出结果如下:

+-------------+---------------------+
| name        | hire_date_formatted |
+-------------+---------------------+
| John Doe    | 2020年01月01日      |
| Jane Doe    | 2019年07月01日      |
| Bob Smith   | 2018年03月15日      |
| Alice Jones | 2017年11月30日      |
+-------------+---------------------+

如上所述,我们使用 %Y年%m月%d日 格式说明符来格式化日期。注意,我们使用中文字符来表示年、月、日。如果需要,你可以使用其他字符,例如 年月日

结论

DATE_FORMAT() 函数是 MariaDB 内置的一个很有用的函数,它允许你将日期/时间值格式化为字符串。使用它可以轻松地将日期/时间值转换为各种格式,以满足你的需求。