注册

详解MySQL的DATE()函数:从日期时间值中提取日期部分

MySQL的DATE()函数可以将一个日期时间值转换为日期值,即只保留日期部分,时间部分被忽略。DATE()函数常常用于将日期时间类型的数据截取出日期部分进行比较、排序等操作。

DATE()函数的使用方法如下:

DATE(date)

其中,date表示要进行转换的日期时间值,可以是一个日期时间类型的列,也可以是一个日期时间类型的表达式,例如:

SELECT DATE(NOW());
-- 返回当前日期,例如 "2021-06-30"
SELECT DATE('2021-06-30 18:30:45');
-- 返回指定日期的日期部分,即 "2021-06-30"

需要注意的是,DATE()函数只能接受日期时间类型的数据,如果使用非法格式的日期字符串作为参数,DATE()函数将返回NULL。

下面提供两个实例,说明DATE()函数的使用方法:

例1:筛选出今天之前的订单

假设有一个订单表order,其中包含创建时间(create_time)列,其数据类型为datetime。现在需要筛选出所有创建时间在今天之前的订单,可以使用DATE()函数来实现,具体代码如下:

SELECT * FROM order WHERE DATE(create_time) <= CURDATE();

其中,CURDATE()函数返回当前日期,用于和DATE(create_time)进行比较,筛选出今天之前的订单。

例2:按照注册日期分组计算每天的注册用户数

假设有一个用户表user,其中包含注册时间(register_time)列,其数据类型为datetime。现在需要按照每天的注册日期分组计算每天的注册用户数,可以使用DATE()函数来实现,具体代码如下:

SELECT DATE(register_time) AS register_day, COUNT(*) AS user_count
FROM user
GROUP BY DATE(register_time);

其中,DATE(register_time)函数将注册时间截取出日期部分,并给这个列取了一个别名register_day;COUNT(*)函数来统计每个日期的用户数,最后使用GROUP BY子句按照日期分组。