
MySQL作为一款流行的关系型数据库管理系统,提供了丰富的日期函数,以满足开发者在数据处理中的多样化需求
本文将全面解析MySQL中的日期函数,通过详细的功能介绍和实例演示,帮助读者掌握这些强大的工具,以高效、灵活的方式处理日期和时间数据
一、获取当前日期和时间 在处理日期和时间时,获取当前值是最基本的需求
MySQL提供了几个函数来满足这一需求: 1.CURDATE():返回当前日期,格式为YYYY-MM-DD,只包含年、月、日部分
例如: sql SELECT CURDATE(); -- 输出:2025-07-22 需要注意的是,CURDATE()与CURRENT_DATE()和CURRENT_DATE具有相同的功能和用法
2.CURTIME():返回当前时间,格式为HH:MM:SS,只包含时、分、秒部分
例如: sql SELECT CURTIME(); -- 输出: 当前时间(如14:30:45) 同样,CURTIME()与CURRENT_TIME()和CURRENT_TIME功能相同
3.NOW():返回当前的日期和时间,格式为YYYY-MM-DD HH:MM:SS
这个函数非常实用,因为它同时提供了日期和时间信息
例如: sql SELECT NOW(); -- 输出:2025-07-2214:30:45 值得注意的是,NOW()取自MySQL的变量“TIMESTAMP”,这个变量在语句开始执行时设定,因此在整个语句执行过程中不会变化
如果需要获取动态的实时时间,可以使用SYSDATE()函数
4.UTC_DATE()和UTC_TIME():分别返回当前的UTC日期和时间
这对于处理跨时区数据时非常有用
例如: sql SELECT UTC_DATE(); -- 输出:2025-07-22 SELECT UTC_TIME(); -- 输出: 当前UTC时间(如06:30:45,假设有时区差异) 二、提取日期和时间部分 在处理复杂的日期和时间数据时,经常需要提取特定的部分
MySQL提供了多个函数来满足这一需求: 1.DATE(datetime):从日期时间值中提取日期部分,格式为YYYY-MM-DD
例如: sql SELECT DATE(2025-07-2214:30:45); -- 输出:2025-07-22 2.TIME(datetime):从日期时间值中提取时间部分,格式为HH:MM:SS
例如: sql SELECT TIME(2025-07-2214:30:45); -- 输出:14:30:45 3.YEAR(date)、MONTH(date)、DAY(date):分别提取日期中的年份、月份和天数部分
例如: sql SELECT YEAR(2025-07-22); -- 输出:2025 SELECT MONTH(2025-07-22); -- 输出:7 SELECT DAY(2025-07-22); -- 输出:22 DAY(date)函数是DAYOFMONTH(date)的同义词,两者功能相同
4.HOUR(time)、MINUTE(time)、SECOND(time):分别提取时间中的小时、分钟和秒数部分
例如: sql SELECT HOUR(14:30:45); -- 输出:14 SELECT MINUTE(14:30:45); -- 输出:30 SELECT SECOND(14:30:45); -- 输出:45 5.DAYNAME(date)、MONTHNAME(date):分别返回给定日期的星期几名称和月份名称
例如: sql SELECT DAYNAME(2025-07-22); -- 输出: Tuesday(假设是星期二) SELECT MONTHNAME(2025-07-22); -- 输出: July 6.WEEK(date)、WEEKDAY(date)、WEEKOFYEAR(date)、YEARWEEK(date):这些函数用于返回与周相关的信息
例如,WEEK(date)返回给定日期是一年中的第几周;WEEKDAY(date)返回星期索引(0表示星期一,6表示星期日);WEEKOFYEAR(date)与WEEK(date)类似,但具体实现可能有所不同;YEARWEEK(date)返回年份和周数的组合
7.DAYOFYEAR(date)、DAYOFMONTH(date)、DAYOFWEEK(date):这些函数分别返回日期是一年中的第几天、月份中的第几天以及星期中的第几天(索引可能有所不同)
三、日期和时间的增减 在处理时间序列数据时,经常需要对日期和时间进行增减操作
MySQL提供了几个函数来满足这一需求: 1.DATE_ADD(date, INTERVAL expr unit)和ADDDATE(date, INTERVAL expr unit):向日期值增加指定的时间间隔
expr表示要添加的时间量,unit表示时间单位(如SECOND、MINUTE、HOUR、DAY、MONTH、YEAR)
例如: sql SELECT DATE_ADD(2025-07-22, INTERVAL5 DAY); -- 输出:2025-07-27 SELECT ADDDATE(2025-07-22, INTERVAL1 MONTH); -- 输出:2025-08-22 注意,ADDDATE()是DATE_ADD()的同义词
2.DATE_SUB(date, INTERVAL expr unit)和SUBDATE(date, INTERVAL expr unit):从日期值减去指定的时间间隔
用法与DATE_ADD()和ADDDATE()类似,但方向相反
例如: sql SELECT DATE_SUB(2025-07-22, INTERVAL3 DAY); -- 输出:2025-07-19 SELECT SUBDATE(2025-07-22, INTERVAL1 MONTH); -- 输出:2025-06-22 同样,SUBDATE()是DATE_SUB()的同义词
四、日期和时间的差值计算 计算两个日期或时间之间的差值是常见的需求
MySQL提供了几个函数来满足这一需求: 1.DATEDIFF(date1, date2):计算两个日期之间的天数差
date1表示结束日期,date2表示开始日期
例如: sql SELECT DATEDIFF(2025-07-27, 2025-07-22); -- 输出:5 2.TIMEDIFF(time1, time2):计算两个时间之间的差值,以HH:MM:SS格式返回
例如: sql SELECT TIMEDIFF(16:30:00, 14:00:00); -- 输出:02:30:00 3.TIMESTAMPDIFF(unit, datetime1, datetime2):计算两个日期时间之间的差值,以指定的单位返回
unit表示差值的单位(如SECOND、MINUTE、HOUR、DAY、MONTH、YEAR)
例如: sql SELECT TIMESTAMPDIFF(DAY, 2025-07-01, 2025-07-22); -- 输出:21 五、日期和时间的转换 在处理不同格式的日期和时间数据时,经常需要进行转换操作
MySQL提供了几个函数来满足这一需求: 1.UNIX_TIM
解决MySQL登录错误28000指南
MySQL日期函数全解析
MySQL存储过程:字符串拼接技巧
如何在MySQL中高效实现关联数据删除策略
MySQL表中字段修改实操指南
MySQL清空表数据后快速恢复指南
mysql_install_db:初始化数据库必备工具
解决MySQL登录错误28000指南
MySQL存储过程:字符串拼接技巧
如何在MySQL中高效实现关联数据删除策略
MySQL表中字段修改实操指南
MySQL清空表数据后快速恢复指南
mysql_install_db:初始化数据库必备工具
MySQL Dump后内存高效释放技巧
MySQL免费学习资料大放送
MySQL数据库中外键约束的格式与应用详解
MySQL中COALESCE函数的实用技巧
MySQL:如何终止指定IP的连接
ABP框架搭配MySQL实战指南