mysql时间处理函数和操作笔记

前言

写sql时经常用到时间处理函数,我整理了一份mysql的常用sql笔记,供大家参考。

如果对你有帮助,请点赞支持~ 多谢🙏

笔记

sql 复制代码
-- MySQL 时间处理函数和操作符笔记

-- 1. 获取当前日期和时间
-- NOW(), SYSDATE(), CURRENT_TIMESTAMP(), CURDATE(), CURTIME()
SELECT NOW();                   -- 当前日期和时间(函数执行时)
SELECT SYSDATE();               -- 当前日期和时间(语句执行时,与NOW()不同)
SELECT CURRENT_TIMESTAMP();      -- 同NOW()
SELECT CURDATE();               -- 当前日期(不带时间)
SELECT CURTIME();               -- 当前时间(不带日期)

-- 2. 时间类型转换
-- DATE(), TIME(), DATETIME(), STR_TO_DATE(), DATE_FORMAT()
SELECT DATE('2023-01-01 12:00:00');       -- 提取日期部分
SELECT TIME('2023-01-01 12:00:00');       -- 提取时间部分
SELECT STR_TO_DATE('01,01,2023', '%d,%m,%Y'); -- 字符串转日期
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 格式化输出

-- 3. 提取时间部分
-- YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()
SELECT YEAR(NOW());             -- 提取年份
SELECT MONTH(NOW());            -- 提取月份
SELECT DAY(NOW());              -- 提取日
SELECT HOUR(NOW());             -- 提取小时
SELECT MINUTE(NOW());           -- 提取分钟
SELECT SECOND(NOW());           -- 提取秒数

-- 4. 时间运算
-- DATE_ADD(), DATE_SUB(), + INTERVAL, - INTERVAL
SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY);    -- 加1天
SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH);  -- 减1个月
SELECT CURDATE() + INTERVAL 2 HOUR;            -- 加2小时
SELECT NOW() - INTERVAL 30 MINUTE;             -- 减30分钟

-- 5. 时间差计算
-- DATEDIFF(), TIMEDIFF(), TIMESTAMPDIFF()
SELECT DATEDIFF('2023-01-10', '2023-01-01');   -- 日期差(天)
SELECT TIMEDIFF('12:00:00', '08:30:00');       -- 时间差(HH:MM:SS)
SELECT TIMESTAMPDIFF(HOUR, '2023-01-01', '2023-01-02'); -- 指定单位差值

-- 6. 时间截断
-- DATE(), TIME(), EXTRACT(), TIMESTAMP()
SELECT DATE(NOW());              -- 截断为日期
SELECT TIME(NOW());              -- 截断为时间
SELECT EXTRACT(YEAR_MONTH FROM NOW()); -- 提取年月
SELECT TIMESTAMP(NOW());         -- 转换为时间戳

-- 7. 时间格式化
-- DATE_FORMAT() 模式
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');          -- 2023-01-01
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日');      -- 2023年01月01日
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');          -- 14:30:45
SELECT DATE_FORMAT(NOW(), '%W, %M %d %Y');      -- 星期几, 月名 日 年

-- 8. 生成时间序列
-- 使用递归CTE或辅助表(MySQL 8.0+)
WITH RECURSIVE date_series AS (
    SELECT '2023-01-01' AS date
    UNION ALL
    SELECT date + INTERVAL 1 DAY FROM date_series
    WHERE date < '2023-01-10'
)
SELECT * FROM date_series;

-- 9. 时间比较
-- 常规比较操作符(>, <, =, >=, <=)
SELECT CURDATE() > '2023-01-01';                -- 日期比较
SELECT NOW() BETWEEN '2023-01-01' AND '2023-12-31'; -- 范围比较

-- 10. 特殊时间值
-- UNIX_TIMESTAMP(), FROM_UNIXTIME()
SELECT UNIX_TIMESTAMP();         -- 当前UNIX时间戳
SELECT UNIX_TIMESTAMP('2023-01-01'); -- 指定日期时间戳
SELECT FROM_UNIXTIME(1672531200); -- 时间戳转日期时间

-- 11. 时间函数
-- LAST_DAY(), MAKEDATE(), MAKETIME(), PERIOD_ADD()
SELECT LAST_DAY('2023-02-01');   -- 当月最后一天
SELECT MAKEDATE(2023, 1);        -- 创建日期(2023年第1天)
SELECT MAKETIME(12, 30, 0);      -- 创建时间
SELECT PERIOD_ADD(202301, 5);    -- 增加5个月(格式YYMM或YYYYMM)

-- 12. 时区处理
-- CONVERT_TZ() (需要时区表支持)
SELECT CONVERT_TZ(NOW(), '+00:00', '+08:00'); -- 转换时区

-- 13. 星期相关函数
-- DAYOFWEEK(), DAYOFYEAR(), WEEK(), WEEKOFYEAR(), YEARWEEK()
SELECT DAYOFWEEK('2023-01-01'); -- 星期几(1=周日,7=周六)
SELECT DAYOFYEAR('2023-01-01'); -- 一年中的第几天
SELECT WEEK('2023-01-01');      -- 一年中的第几周
SELECT WEEKOFYEAR('2023-01-01');-- 同WEEK()
SELECT YEARWEEK('2023-01-01');  -- 年份和周数

-- 14. 季度计算
-- QUARTER()
SELECT QUARTER('2023-04-01');   -- 返回2(第二季度)

-- 15. 时间戳处理
-- TIMESTAMP(), TIMESTAMPADD(), TIMESTAMPDIFF()
SELECT TIMESTAMP('2023-01-01'); -- 转换为时间戳
SELECT TIMESTAMPADD(MINUTE, 30, '2023-01-01 12:00:00'); -- 增加30分钟
SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', '2023-06-01'); -- 月份差
相关推荐
打码人的日常分享41 分钟前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
三水不滴44 分钟前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
-孤存-2 小时前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
土拨鼠烧电路2 小时前
笔记03:业务语言速成:“人、货、场”模型与IT系统全景图
笔记
2301_822366352 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
2301_812731413 小时前
CSS3笔记
前端·笔记·css3
万邦科技Lafite4 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
小乔的编程内容分享站4 小时前
记录使用VSCode调试含scanf()的C语言程序出现的两个问题
c语言·开发语言·笔记·vscode
自可乐4 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus