📅  最后修改于: 2023-12-03 14:44:09.111000             🧑  作者: Mango
MariaDB 是 MySQL 的一个分支,其内置了许多有用的函数,如 DATE_FORMAT()
函数用于格式化日期并将其以字符串的形式返回。
以下是 DATE_FORMAT()
函数的语法:
DATE_FORMAT(date, format)
其中,date
是一个日期或日期/时间值,format
是需要应用的格式化字符串。
以下是 DATE_FORMAT()
函数的参数:
| 参数 | 描述 |
| --- | --- |
| date
| 需要格式化的日期或日期/时间值。 |
| format
| 定义日期/时间格式的字符串。 |
以下是可以在 format
字符串中使用的日期/时间格式说明符:
| 格式说明符 | 描述 |
| --- | --- |
| %a
| 缩写的星期几名,例如 Sun
、Mon
、Tue
等。 |
| %b
或 %h
| 缩写的月份名,例如 Jan
、Feb
、Mar
等。 |
| %c
| 月份数字,不带前导零,例如 1
、2
、3
等。 |
| %d
| 月份中的日数,带前导零,例如 01
、02
、03
等。 |
| %e
| 月份中的日数,不带前导零,例如 1
、2
、3
等。 |
| %f
| 微秒,例如 000001
、123456
等。 |
| %H
| 小时,24 小时制,带前导零,例如 00
、01
、02
等。 |
| %h
或 %I
| 小时,12 小时制,带前导零,例如 01
、02
、03
等。 |
| %i
| 分钟,带前导零,例如 00
、01
、02
等。 |
| %j
| 年份中的日数,不带前导零,例如 1
、2
、3
等。 |
| %k
| 小时,24 小时制,不带前导零,例如 0
、1
、2
等。 |
| %l
| 小时,12 小时制,不带前导零,例如 1
、2
、3
等。 |
| %m
| 月份,带前导零,例如 01
、02
、03
等。 |
| %M
| 完整的月份名,例如 January
、February
、March
等。 |
| %p
| 上午/下午(针对 12 小时制),例如 AM
、PM
。 |
| %r
| 时间,12 小时制,带 AM/PM。例如 01:02:03 AM
、04:05:06 PM
等。 |
| %S
| 带有前导零的秒数,例如 00
、01
、02
等。 |
| %s
| 不带前导零的秒数,例如 0
、1
、2
等。 |
| %T
| 时间,24 小时制,例如 01:02:03
、04:05:06
。 |
| %U
| 年份中的周数,以周日为每周的第一天。例如 00
、01
、02
等。 |
| %u
| 年份中的周数,以周一为每周的第一天。例如 00
、01
、02
等。 |
| %v
| 年份中的周数,根据每周至少包含 4 天来确定(可能属于前一年或后一年)。例如 00
、01
、02
等。 |
| %W
| 完整的星期几名,例如 Sunday
、Monday
、Tuesday
等。 |
| %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 内置的一个很有用的函数,它允许你将日期/时间值格式化为字符串。使用它可以轻松地将日期/时间值转换为各种格式,以满足你的需求。