MySQL日期时间操作函数
封面图
•
2025-12-20
•
MySQL
252
0
0
0
在 MySQL 中,日期和时间操作是数据库开发中非常常见的任务。MySQL 提供了丰富的内置函数来处理日期和时间,包括获取当前时间、格式化日期、计算时间差、加减时间等。 以下是一些常用的 **MySQL 日期和时间操作函数**: --- ## 📆 一、获取当前日期和时间的函数 | 函数名 | 功能 | 示例 | |--------|------|------| | `NOW()` | 返回当前日期和时间(`YYYY-MM-DD HH:MM:SS`) | `SELECT NOW();` | | `CURRENT_TIMESTAMP` | 同 `NOW()`,返回当前时间戳 | `SELECT CURRENT_TIMESTAMP;` | | `CURDATE()` | 返回当前日期(`YYYY-MM-DD`) | `SELECT CURDATE();` | | `CURTIME()` | 返回当前时间(`HH:MM:SS`) | `SELECT CURTIME();` | | `SYSDATE()` | 返回系统当前时间(与 `NOW()` 类似,但可能有细微差别) | `SELECT SYSDATE();` | --- ## 🧮 二、日期和时间格式化函数 | 函数名 | 功能 | 示例 | |--------|------|------| | `DATE_FORMAT(date, format)` | 按指定格式格式化日期 | `SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');` | | `TIME_FORMAT(time, format)` | 格式化时间部分 | `SELECT TIME_FORMAT(CURTIME(), '%H:%i');` | | `FROM_UNIXTIME(unix_time)` | 将 Unix 时间戳转换为日期时间 | `SELECT FROM_UNIXTIME(1630000000);` | | `UNIX_TIMESTAMP(date)` | 将日期时间转换为 Unix 时间戳 | `SELECT UNIX_TIMESTAMP(NOW());` | ### 常用格式说明: - `%Y`:四位年份 - `%y`:两位年份 - `%M`:月份全称(January) - `%m`:两位月份 - `%D`:日期(1st, 2nd, 3rd...) - `%d`:两位日期 - `%H`:24小时制小时 - `%h`:12小时制小时 - `%i`:分钟 - `%s`:秒 --- ## 📅 三、日期和时间运算函数 | 函数名 | 功能 | 示例 | |--------|------|------| | `ADDDATE(date, interval)` / `DATE_ADD(date, interval)` | 在日期上添加时间间隔 | `SELECT DATE_ADD('2024-01-01', INTERVAL 1 DAY);` | | `SUBDATE(date, interval)` / `DATE_SUB(date, interval)` | 从日期中减去时间间隔 | `SELECT DATE_SUB('2024-01-01', INTERVAL 1 WEEK);` | | `DATEDIFF(date1, date2)` | 计算两个日期之间的天数差 | `SELECT DATEDIFF('2024-01-05', '2024-01-01');` | | `TIMEDIFF(time1, time2)` | 计算两个时间之间的差 | `SELECT TIMEDIFF('10:00:00', '08:30:00');` | | `DATE_ADD(date, INTERVAL expr unit)` | 更灵活的日期加法 | `SELECT DATE_ADD('2024-01-01', INTERVAL 1 MONTH);` | ### 常见单位: - `SECOND` - `MINUTE` - `HOUR` - `DAY` - `MONTH` - `YEAR` --- ## 🧩 四、提取日期/时间部分的函数 | 函数名 | 功能 | 示例 | |--------|------|------| | `YEAR(date)` | 提取年份 | `SELECT YEAR(NOW());` | | `MONTH(date)` | 提取月份 | `SELECT MONTH(NOW());` | | `DAY(date)` | 提取日期 | `SELECT DAY(NOW());` | | `HOUR(time)` | 提取小时 | `SELECT HOUR(CURTIME());` | | `MINUTE(time)` | 提取分钟 | `SELECT MINUTE(CURTIME());` | | `SECOND(time)` | 提取秒 | `SELECT SECOND(CURTIME());` | | `DAYOFWEEK(date)` | 返回一周中的第几天(1=Sunday) | `SELECT DAYOFWEEK(NOW());` | | `DAYOFYEAR(date)` | 返回一年中的第几天 | `SELECT DAYOFYEAR(NOW());` | --- ## ✅ 五、其他常用函数 | 函数名 | 功能 | 示例 | |--------|------|------| | `LAST_DAY(date)` | 获取该月的最后一天 | `SELECT LAST_DAY('2024-02-01');` | | `CONVERT_TZ(date, from_tz, to_tz)` | 转换时区 | `SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Shanghai');` | | `INTERVAL` | 用于日期时间加减 | `SELECT '2024-01-01' + INTERVAL 1 MONTH;` | --- ## 📌 六、示例使用场景 ```sql -- 获取当前日期和时间 SELECT NOW(); -- 当前日期 SELECT CURDATE(); -- 当前时间 SELECT CURTIME(); -- 格式化日期 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 加一天 SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 减一个月 SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 计算两个日期的天数差 SELECT DATEDIFF('2024-04-01', '2024-03-01'); -- 提取年份 SELECT YEAR(NOW()); ``` --- 如果你有具体的使用场景或问题,欢迎告诉我,我可以提供更详细的帮助!
上一篇:
mysqlbinlog 查看binlog日志时报错unknown variable default-character-set=utf8
下一篇:
mysql高版本 sql_mode = only_full_group_by的解决办法
标题录入,一次不能超过6条
留言
评论