MySQL如何将DATETIME分离为DATE和TIME?
在MySQL中,DATETIME是一个日期时间类型,包含日期和时间的值。有时候我们需要将它们分离成DATE和TIME。下面就介绍几种方法。
阅读更多:MySQL 教程
方法一:使用DATE()和TIME()函数
利用MySQL提供的DATE()和TIME()函数可以将DATETIME类型字段拆分为日期和时间,下面是一个例子:
SELECT DATE(datetime_field) AS date_only, TIME(datetime_field) AS time_only
FROM table_name;
通过上述SQL语句可以将DATETIME类型字段datetime_field分别拆分成日期和时间,并返回分别由DATE()和TIME()函数计算出来的新字段。
方法二:使用DATE_FORMAT()函数
DATE_FORMAT()函数可以将日期以特定的格式进行显示,DATE_FORMAT(str,format)参数中的str即为待转换的日期时间值,format则是指定输出日期时间的格式化方式,下面是一组示例:
- 将datetime_field字段以“yyyy-mm-dd”格式显示
SELECT DATE_FORMAT(datetime_field, '%Y-%m-%d') AS date_only FROM table_name;
上述SQL语句中使用了DATE_FORMAT()函数,并将日期时间值按照“yyyy-mm-dd”格式进行显示,返回的结果即为日期。
- 将datetime_field字段以“hh:mm:ss”格式显示
SELECT DATE_FORMAT(datetime_field, '%H:%i:%s') AS time_only FROM table_name;
通过上述SQL语句,同样使用了DATE_FORMAT()函数,将日期时间值按照“hh:mm:ss”格式显示,返回结果即为时间。
示例
对于以下数据表:
CREATE TABLE `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime_field` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
数据表中包含若干行不同的日期时间值,如下所示:
+----+---------------------+
| id | datetime_field |
+----+---------------------+
| 1 | 2021-12-31 12:34:56 |
| 2 | 2022-01-01 00:00:00 |
| 3 | 2022-02-02 23:59:59 |
+----+---------------------+
要求将DATETIME类型字段分离成DATE和TIME,可以使用以下SQL语句:
SELECT DATE(datetime_field) AS date_only, TIME(datetime_field) AS time_only
FROM test_table;
执行以上SQL语句,可以得到以下输出结果:
+------------+-----------+
| date_only | time_only |
+------------+-----------+
| 2021-12-31 | 12:34:56 |
| 2022-01-01 | 00:00:00 |
| 2022-02-02 | 23:59:59 |
+------------+-----------+
总结
本文介绍了两种方法,一种是使用MySQL提供的DATE()和TIME()函数,另一种是利用DATE_FORMAT()函数将DATETIME类型字段分离成DATE和TIME。根据实际需求,可以选择不同的方法进行实现。