当我们在使用 MySQL 数据库时,常常会遇到对日期时间进行格式化输出的需求。MySQL 提供了 DATE_FORMAT() 函数用来格式化日期时间值。
DATE_FORMAT() 函数接受两个参数:date和format。其中,date为日期时间值,可以是一个字符串,也可以是一个合法的日期时间类型的格式;format则为表示日期时间输出格式的字符串。
日期时间输出格式字符串中,各种指令字符都需要用 % 符号进行前缀。以下是常用的指令字符:
- %Y:四位数字的年份
- %y:两位数字的年份
- %m:两位数字的月份(01-12)
- %c:无前导零的月份(1-12)
- %d:两位数字的天数(01-31)
- %H:24 小时制的小时数(00-23)
- %h:12 小时制的小时数(01-12)
- %i:两位数字的分钟数(00-59)
- %s:两位数字的秒数(00-59)
- %p:AM 或 PM
- %M:英文全名的月份
- %b:英文简写的月份
- %a:英文简写的星期几
- %W:英文全名的星期几
下面用两个示例说明 DATE_FORMAT() 函数的用法:
示例1:
我们有一个 t_user 表,其中包含了用户的创建时间,其数据类型为 timestamp,格式为 "yyyy-mm-dd HH:mm:ss"。
CREATE TABLE t_user (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO t_user(username, password) VALUES('zhangsan', '123456');
INSERT INTO t_user(username, password) VALUES('lisi', '456789');
现在,我们希望查询出用户的创建时间,并将其格式化为 "yyyy-mm-dd" 的形式。查询语句可以写成这样:
SELECT id, username,
DATE_FORMAT(create_time, '%Y-%m-%d') AS create_date
FROM t_user;
运行以上 SQL 语句,我们可以得到如下结果:
+----+----------+-------------+
| id | username | create_date |
+----+----------+-------------+
| 1 | zhangsan | 2021-08-10 |
| 2 | lisi | 2021-08-10 |
+----+----------+-------------+
以上查询结果中,create_date 列即为我们格式化后得到的日期。
示例2:
我们有一个 t_order 表,其中包含了订单的创建时间,其数据类型为 datetime,格式为 "yyyy-mm-dd HH:mm:ss"。
CREATE TABLE t_order (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20) NOT NULL,
user_id INT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO t_order(order_no, user_id, price) VALUES('20210810010001', 1, 99.99);
INSERT INTO t_order(order_no, user_id, price) VALUES('20210810010002', 2, 88.88);
现在,我们希望查询出订单的创建时间,并将其格式化为"yyyymmddHHmmss"的形式。查询语句可以写成这样:
SELECT id, order_no,
DATE_FORMAT(create_time, '%Y%m%d%H%i%s') AS create_time
FROM t_order;
运行以上 SQL 语句,我们可以得到如下结果:
+----+----------------+--------------+
| id | order_no | create_time |
+----+----------------+--------------+
| 1 | 20210810010001 | 20210810011034 |
| 2 | 20210810010002 | 20210810011526 |
+----+----------------+--------------+
以上查询结果中,create_time 列即为我们格式化后得到的日期时间。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql 日期时间 DATE_FORMAT(date,format) - Python技术站