在数据分析中,时间维度通常是分析的核心,尤其是当我们需要基于日期和时间进行统计、趋势分析时。SQL 提供了丰富的日期与时间函数,帮助我们从原始数据中提取时间信息,计算时间跨度,进行趋势分析,并最终生成对业务有价值的报告。
本文将通过多个实战案例,展示如何使用 SQL 中的日期和时间函数进行时间分析和统计。
一、常用日期与时间函数概览
函数名 | 说明 | 示例 |
---|---|---|
NOW() | 返回当前的日期和时间 | NOW() → 2024-12-27 12:30:00 |
CURDATE() | 返回当前日期(不包含时间) | CURDATE() → 2024-12-27 |
DATE() | 从日期时间中提取日期部分 | DATE('2024-12-27 12:30:00') → 2024-12-27 |
YEAR() / MONTH() / DAY() | 提取年份 / 月份 / 日 | YEAR('2024-12-27') → 2024 |
DATEDIFF() | 计算两个日期之间的天数差 | DATEDIFF('2024-12-27', '2024-12-01') → 26 |
TIMESTAMPDIFF() | 计算两个日期时间之间的差值(以指定单位) | TIMESTAMPDIFF(DAY, '2024-12-01', '2024-12-27') → 26 |
DATE_ADD() / DATE_SUB() | 日期加减指定的时间间隔 | DATE_ADD('2024-12-01', INTERVAL 10 DAY) → 2024-12-11 |
WEEK() / WEEKDAY() | 获取星期几或某个日期的星期数 | WEEK('2024-12-27') → 52 |
DATE_FORMAT() | 格式化日期为指定的格式 | DATE_FORMAT('2024-12-27', '%Y-%m-%d') → 2024-12-27 |
STR_TO_DATE() | 将字符串转换为日期格式 | STR_TO_DATE('2024-12-27', '%Y-%m-%d') → 2024-12-27 |
二、实战案例:日期与时间函数应用
案例 1:统计每日订单数量
需求
在电商平台中,我们需要统计每天的订单数量,以了解平台的日活跃情况。
表结构 orders
order_id | order_date |
---|---|
1 | 2024-12-01 10:15:00 |
2 | 2024-12-01 11:30:00 |
3 | 2024-12-02 14:45:00 |
4 | 2024-12-02 16:00:00 |
5 | 2024-12-03 09:00:00 |
SQL 实现