时间计算函数用于处理日期和时间数据,进行各种时间计算和转换。
以下个人总结了一些常用的时间计算函数及其用法:
1. NOW()
返回当前的日期和时间。
sql">SELECT NOW(); -- 返回当前的日期和时间
2. CURDATE() 和 CURTIME()
CURDATE()
返回当前的日期。CURTIME()
返回当前的时间。
sql">SELECT CURDATE(); -- 返回当前日期
SELECT CURTIME(); -- 返回当前时间
3. DATE_ADD() 和 DATE_SUB()
用于对日期进行加法或减法操作。
sql">SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- 当前日期加7天
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 当前日期减1个月
4. DATEDIFF()
返回两个日期之间的天数差。
sql">SELECT DATEDIFF('2023-12-31', '2023-01-01'); -- 返回2023年最后一天与2023年第一天的天数差
5. TIMESTAMPDIFF()
返回两个日期或时间之间的差值,可以指定单位(如秒、分钟、小时、天)。
sql">SELECT TIMESTAMPDIFF(DAY, '2023-01-01', '2023-12-31'); -- 返回两个日期之间的天数差
SELECT TIMESTAMPDIFF(HOUR, '2023-01-01 08:00:00', '2023-01-02 08:00:00'); -- 返回两个时间之间的小时差
6. DATE_FORMAT()
格式化日期为指定的格式。
sql">SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 返回当前日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'
7. STR_TO_DATE()
将字符串转换为日期格式。
sql">SELECT STR_TO_DATE('2023-12-31', '%Y-%m-%d'); -- 将字符串转换为日期
8. EXTRACT()
从日期中提取特定的部分,如年、月、日等。
sql">SELECT EXTRACT(YEAR FROM NOW()) AS current_year; -- 提取当前年份
SELECT EXTRACT(MONTH FROM NOW()) AS current_month; -- 提取当前月份
SELECT EXTRACT(DAY FROM NOW()) AS current_day; -- 提取当前日期
9. LAST_DAY()
返回指定日期所在月份的最后一天。
sql">SELECT LAST_DAY('2023-02-15'); -- 返回2023年2月的最后一天
10. WEEKDAY()
返回星期几的数字表示(0 = Monday, ..., 6 = Sunday)。
sql">SELECT WEEKDAY('2023-10-01'); -- 返回2023年10月1日的星期几
示例
以下是一个结合多个时间函数的示例:
sql">SELECT NOW() AS current_time,DATE_ADD(NOW(), INTERVAL 10 DAY) AS ten_days_later,DATEDIFF(NOW(), '2023-01-01') AS days_since_new_year,DATE_FORMAT(NOW(), '%W, %M %d, %Y') AS formatted_date;