zhangbuda7788 blog

一些sql技巧

sql 的一些技巧

sql 与时间相关的用法

SELECT NOW();          -- 获取当前时间
SELECT CURRENT_DATE;   -- 获取当前日期
SELECT DATE_ADD(NOW(), INTERVAL 5 DAY);  -- 当前时间加 5 天
SELECT DATE_SUB(NOW(), INTERVAL 2 HOUR); -- 当前时间减去 2 小时
SELECT * FROM orders WHERE order_date > '2024-01-01';
`时间区间比较,通过 between 操作符在指定时间范围内查询记录

`SELECT * FROM events WHERE event_date BETWEEN '2024-01-01' AND '2024-12-31';
`timestampdiff() 计算两个日期时间之间的差异,计算天数、小时、分钟

`SELECT TIMESTAMPDIFF(DAY, '2024-01-01', NOW()); -- 计算当前日期与 2024-01-01 之间的天数
`datediff() 返回两个日期之间的天数差

`SELECT DATEDIFF(NOW(), '2024-01-01'); -- 返回当前日期与指定日期的天数差
`日期格式化, date_format() 格式化日期时间值,返回指定格式的字符串

`SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');  -- 格式化为 '2024-11-14'
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');  -- 格式化为 '14:30:25'
`常见格式符:

%Y:四位年份(如 2024)
%m:月份(01 到 12)
%d:日期(01 到 31)
%H:小时(00 到 23)
%i:分钟(00 到 59)
%s:秒(00 到 59)

=================================

获取特定的日期部分:

YEAR():返回日期的年份部分。
MONTH():返回日期的月份部分。
DAY():返回日期的日部分。
HOUR():返回时间的小时部分。
MINUTE():返回时间的分钟部分。
SECOND():返回时间的秒部分。

`SELECT YEAR(NOW());    -- 获取当前年份
SELECT MONTH(NOW());   -- 获取当前月份
SELECT DAY(NOW());     -- 获取当前日期

SELECT UNIX_TIMESTAMP(NOW()); -- 当前时间的时间戳
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00'); -- 指定时间的时间戳

SELECT FROM_UNIXTIME(1609459200); -- 转换时间戳为日期时间

SELECT * FROM events WHERE event_date > NOW() - INTERVAL 1 WEEK;  -- 最近一周内的事件

SELECT DATE(created_at) AS day, COUNT(*) FROM orders GROUP BY day;  -- 按天统计订单数量
SELECT MONTH(created_at) AS month, COUNT(*) FROM orders GROUP BY month;  -- 按月统计订单数量

#c/c++ #git #sql