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'); -- 月份差
相关推荐
xiep14383335101 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
Cx330❀1 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
小幽余生不加糖2 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
Java小白程序员2 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
老虎06272 小时前
数据库基础—SQL语句总结及在开发时
数据库·sql·oracle
..过云雨2 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习
岑梓铭3 小时前
考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
笔记·考研·408·计算机组成原理·计组
爱掘金的土拨鼠4 小时前
国产化dm数据库锁表解锁
数据库
花花无缺4 小时前
MySQL 的存储引擎-InnoDB 和 MyISAM的对比
mysql
苏琢玉4 小时前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php