Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql日期函数

MySQL常用函数详解之日期函数

作者:AA-代码批发V哥

本文详解MySQL日期函数,涵盖获取、计算、格式化及比较,结合统计销售额、计算注册时长等实战案例,帮助掌握日期处理技巧,感兴趣的朋友一起看看吧

从记录订单时间、用户注册时间,到统计每月销售额、分析数据变化趋势,都离不开对日期时间的操作,MySQL提供了丰富的日期函数,能够高效地进行日期和时间的提取、计算、格式化等操作。本文我将深入剖析MySQL常用日期函数的功能、语法及应用场景,并结合实战案例,带你全面掌握日期函数的使用技巧。

一、日期函数概述

1.1 日期函数的作用

MySQL日期函数主要用于处理日期和时间数据,其核心作用包括:

1.2 日期数据类型

在深入学习日期函数前,先回顾MySQL中常用的日期和时间数据类型:

二、日期和时间的获取函数

2.1 获取当前日期和时间

SELECT CURDATE();
SELECT CURTIME();
SELECT NOW();
SELECT SYSDATE();

2.2 提取日期和时间的部分信息

SELECT YEAR(NOW()) AS current_year;
SELECT MONTH(NOW()) AS current_month;
SELECT DAY(NOW()) AS current_day;
SELECT HOUR(CURTIME()) AS current_hour;
SELECT MINUTE(CURTIME()) AS current_minute;
SELECT SECOND(CURTIME()) AS current_second;

2.3 获取日期中的星期、季度等信息

SELECT WEEKDAY(NOW()) AS weekday_index;
SELECT DAYNAME(NOW()) AS weekday_name;
SELECT MONTHNAME(NOW()) AS month_name;
SELECT QUARTER(NOW()) AS current_quarter;

三、日期和时间的计算函数

3.1 日期和时间的加减运算

-- 在当前日期上加7天
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS add_7_days;
-- 在当前日期上减1个月
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH) AS subtract_1_month;
SELECT ADDDATE(NOW(), INTERVAL 3 HOUR) AS add_3_hours;
SELECT SUBDATE(NOW(), INTERVAL 15 MINUTE) AS subtract_15_minutes;

3.2 计算两个日期之间的间隔

-- 计算两个日期之间的天数差
SELECT DATEDIFF('2024-12-31', '2024-01-01') AS day_difference;
-- 计算两个时间之间相差的小时数
SELECT TIMESTAMPDIFF(HOUR, '2024-01-01 00:00:00', '2024-01-01 12:00:00') AS hour_difference;

四、日期和时间的格式化函数

4.1 DATE_FORMAT(date, format)

DATE_FORMAT函数将日期按照指定的格式进行格式化,常用的格式代码如下:

示例:将当前日期格式化为“2024年12月31日 12:00:00”

SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s') AS formatted_date;

4.2 TIME_FORMAT(time, format)

TIME_FORMAT函数用于格式化时间,与DATE_FORMAT类似,但仅适用于时间部分。

-- 将当前时间格式化为“下午12时00分00秒”
SELECT TIME_FORMAT(CURTIME(), '%p%h时%i分%s秒') AS formatted_time;

五、日期和时间的比较与判断函数

5.1 比较日期和时间的先后顺序

可以直接使用比较运算符(><>=<==)对日期和时间进行比较。

-- 判断当前日期是否大于指定日期
SELECT NOW() > '2024-01-01' AS is_greater;

5.2 判断日期是否在特定范围内

使用BETWEEN... AND...语句判断日期是否在指定的范围内。

-- 查询订单表中2024年1月1日到2024年12月31日之间的订单
SELECT *
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

六、实战案例

6.1 统计每月销售额

sales表中,有order_date(订单日期)和amount(订单金额)字段,需求是统计每个月的总销售额。

SELECT 
    DATE_FORMAT(order_date, '%Y-%m') AS month,
    SUM(amount) AS total_sales
FROM 
    sales
GROUP BY 
    DATE_FORMAT(order_date, '%Y-%m')
ORDER BY 
    month;

6.2 计算用户注册时长

users表中,register_date字段记录了用户的注册日期,需求是计算每个用户的注册时长(以天数为单位)。

SELECT 
    user_id,
    DATEDIFF(CURDATE(), register_date) AS registration_days
FROM 
    users;

6.3 筛选本周内的活动数据

activities表中,activity_date字段记录活动发生的日期,需求是筛选出本周内的活动数据。

SELECT *
FROM activities
WHERE activity_date BETWEEN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) 
                    AND DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) - 6 DAY);

到此这篇关于MySQL常用函数详解之日期函数的文章就介绍到这了,更多相关mysql日期函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文