当前位置: 首页 > news >正文

MySQL日期函数的详细教程(包含常用函数及其示例)

概述

  • 以下是一个关于MySQL日期函数的详细教程,包含常用函数及其示例
  • 内容以转换为PDF电子书,喜欢的朋友可以转存慢慢享用:https://pan.quark.cn/s/57d2e491bbbe

1. 获取当前日期和时间

• CURDATE() / CURRENT_DATE()

返回当前日期(格式:‘YYYY-MM-DD’)。

SELECT CURDATE(); -- 输出:2023-10-25

• CURTIME() / CURRENT_TIME()

返回当前时间(格式:‘HH:MM:SS’)。

SELECT CURTIME(); -- 输出:14:30:45

• NOW() / SYSDATE()

返回当前日期和时间(格式:‘YYYY-MM-DD HH:MM:SS’)。

SELECT NOW(); -- 输出:2023-10-25 14:30:45

2. 提取日期/时间的部分

• YEAR(date) / MONTH(date) / DAY(date)

提取年、月、日。

SELECT YEAR('2023-10-25'); -- 输出:2023
SELECT MONTH('2023-10-25'); -- 输出:10
SELECT DAY('2023-10-25'); -- 输出:25

• HOUR(time) / MINUTE(time) / SECOND(time)

提取时、分、秒。

SELECT HOUR('14:30:45'); -- 输出:14

• DAYNAME(date)

返回星期名称(如 Monday)。

SELECT DAYNAME('2023-10-25'); -- 输出:Wednesday

• DAYOFWEEK(date)

返回星期索引(1=周日,7=周六)。

SELECT DAYOFWEEK('2023-10-25'); -- 输出:4(对应周三)

• WEEK(date [, mode])

返回一年中的第几周。

SELECT WEEK('2023-10-25'); -- 输出:43

3. 日期格式化

• DATE_FORMAT(date, format)

自定义日期显示格式。

SELECT DATE_FORMAT(NOW(), '%W, %M %d %Y'); -- 输出:Wednesday, October 25 2023

常用格式符号:
%Y: 四位年份

%y: 两位年份

%M: 月份名称(January)

%m: 两位月份

%d: 两位日期

%H: 24小时制小时

%p: AM/PM

• STR_TO_DATE(str, format)

将字符串转为日期。

SELECT STR_TO_DATE('25,10,2023', '%d,%m,%Y'); -- 输出:2023-10-25

4. 日期计算

• DATE_ADD(date, INTERVAL expr unit)

添加时间间隔。

SELECT DATE_ADD('2023-10-25', INTERVAL 7 DAY); -- 输出:2023-11-01

• DATE_SUB(date, INTERVAL expr unit)

减去时间间隔。

SELECT DATE_SUB('2023-10-25', INTERVAL 1 MONTH); -- 输出:2023-09-25

• DATEDIFF(date1, date2)

计算两个日期相差的天数。

SELECT DATEDIFF('2023-10-25', '2023-10-20'); -- 输出:5

• TIMESTAMPDIFF(unit, start, end)

返回两个日期相差的单位数(年、月、日等)。

SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', '2023-10-25'); -- 输出:9

5. 其他实用函数

• LAST_DAY(date)

返回月份的最后一天。

SELECT LAST_DAY('2023-02-15'); -- 输出:2023-02-28

• EXTRACT(unit FROM date)

提取日期的部分(标准SQL语法)。

SELECT EXTRACT(YEAR FROM '2023-10-25'); -- 输出:2023

6. 实际应用示例

• 查询今天的数据:

SELECT * FROM orders WHERE order_date = CURDATE();

• 查询最近7天的数据:

SELECT * FROM logs 
WHERE log_time BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW();

• 计算年龄:

SELECT name, TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age FROM users;

• 格式化日期为季度显示:

SELECT CONCAT('Q', QUARTER(order_date), ' ', YEAR(order_date)) AS quarter 
FROM orders;

注意事项

• 日期格式需符合YYYY-MM-DDYYYYMMDD,否则返回NULL

• 处理跨月/年时注意边界情况(如2023-01-31 + INTERVAL 1 MONTH结果为2023-02-28)。

• 使用TIMESTAMP类型可存储更精确的时间(包含时区支持)。

通过掌握这些函数,您可以高效处理MySQL中的日期和时间数据!

相关文章:

  • JavaWeb:JavaScript
  • 苹果新规生效:即日起不再接受iOS 17 SDK编译的应用提交
  • [密码学实战]商用密码产品密钥体系架构:从服务器密码机到动态口令系统
  • 源码分析之Leaflet中Icon类
  • 【EDA】EDA中聚类(Clustering)和划分(Partitioning)
  • 《算法笔记》4.2小节——算法初步->哈希
  • 观测云数据在Grafana展示的最佳实践
  • Milvus(7):Schema、主字段和自动识别
  • Apache Spark 源码解析
  • Go 语言 TCP 端口扫描器实现与 Goroutine 池原理
  • Modbus主从通信功能码与报文格式
  • 如何在SpringBoot中通过@Value注入Map和List并使用YAML配置?
  • 电子学会—青少年软件编程 python一级等级考试真题—2025年03月
  • 20242817-李臻-课上测试:信号处理
  • uniapp自定义封装tabbar
  • TDengine 数据缓存技术
  • iOS/Flutter混合开发之PlatformView配置与使用
  • 记录一次无界微前端的简单使用
  • Ubuntu 上手动安装 Go 环境并解决“可执行文件格式错误”
  • Mac「brew」快速安装Redis
  • 四川一国企“80后”掌门人为报领导“知遇之恩”,盲目决策致数亿损失
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布首度进军黄金矿产
  • 哈工大赵杰:人形机器人要拓展人的能力而非一味复制,未来产业要做成至少10年
  • 期待会师!神二十与空间站完成对接
  • 拖车10公里收1900元?货车司机质疑收费过高,潮州饶平县市监局已介入
  • 中国海警登临铁线礁开展维权行动并展示五星红旗