MySQL如何将DATETIME分离为DATE和TIME?

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。根据实际需求,可以选择不同的方法进行实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程