MySQL中处理时间的函数

MySQL 提供了丰富的函数来处理日期和时间。这些函数可以用于获取当前时间、格式化日期、计算日期差值等操作。以下是 MySQL 中常用的日期和时间处理函数的分类及其用途。


1. 获取当前日期和时间

函数说明示例结果
NOW()返回当前日期和时间SELECT NOW();2024-12-09 12:30:45
CURDATE()返回当前日期SELECT CURDATE();2024-12-09
CURTIME()返回当前时间SELECT CURTIME();12:30:45
SYSDATE()返回执行函数时的日期和时间(更精确)SELECT SYSDATE();2024-12-09 12:30:45

2. 格式化日期和时间

函数说明示例结果
DATE_FORMAT()将日期格式化为指定格式SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');2024-12-09
TIME_FORMAT()将时间格式化为指定格式SELECT TIME_FORMAT(NOW(), '%H:%i');12:30
DAYNAME()返回日期的星期名SELECT DAYNAME('2024-12-09');Monday
MONTHNAME()返回日期的月份名SELECT MONTHNAME('2024-12-09');December

常见的格式化符号:

  • %Y: 四位年份(如 2024)
  • %m: 两位月份(如 12)
  • %d: 两位日期(如 09)
  • %H: 小时(24 小时制)
  • %i: 分钟
  • %s: 秒

3. 提取日期和时间的组成部分

函数说明示例结果
YEAR()返回日期中的年份SELECT YEAR('2024-12-09');2024
MONTH()返回日期中的月份(数字)SELECT MONTH('2024-12-09');12
DAY()返回日期中的天SELECT DAY('2024-12-09');9
HOUR()返回时间中的小时SELECT HOUR('12:30:45');12
MINUTE()返回时间中的分钟SELECT MINUTE('12:30:45');30
SECOND()返回时间中的秒SELECT SECOND('12:30:45');45
WEEK()返回日期所在的周(1-53)SELECT WEEK('2024-12-09');50
DAYOFWEEK()返回日期对应的星期几(1-7,周日为1)SELECT DAYOFWEEK('2024-12-09');2

4. 日期和时间的运算

函数说明示例结果
DATEDIFF()计算两个日期的差值(天数)SELECT DATEDIFF('2024-12-25', '2024-12-09');16
TIMESTAMPDIFF(unit, d1, d2)返回两个日期之间的差值,指定单位(年/月/天等)SELECT TIMESTAMPDIFF(DAY, '2024-12-09', '2024-12-25');16
ADDDATE()DATE_ADD()增加指定间隔到日期SELECT ADDDATE('2024-12-09', INTERVAL 10 DAY);2024-12-19
SUBDATE()DATE_SUB()从日期中减去指定间隔SELECT SUBDATE('2024-12-09', INTERVAL 10 DAY);2024-11-29

单位包括:

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • MONTH
  • YEAR

5. 其他常用函数

函数说明示例结果
LAST_DAY()返回给定日期的最后一天SELECT LAST_DAY('2024-12-09');2024-12-31
TO_DAYS()返回日期距公元 0 年 1 月 1 日的天数SELECT TO_DAYS('2024-12-09');738904
FROM_DAYS()将天数转换为日期SELECT FROM_DAYS(738904);2024-12-09
STR_TO_DATE()将字符串转换为日期SELECT STR_TO_DATE('09-12-2024', '%d-%m-%Y');2024-12-09

常见案例

  1. 获取某月的订单数量:

    SELECT 
        DATE_FORMAT(order_date, '%Y-%m') AS month, 
        COUNT(*) AS order_count
    FROM orders
    GROUP BY month;
    
  2. 计算用户注册天数:

    SELECT 
        user_id, 
        DATEDIFF(NOW(), registration_date) AS days_since_registration
    FROM users;
    
  3. 获取上个月的第一天和最后一天:

    SELECT 
        DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE())-1 DAY) AS first_day,
        LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS last_day;
    

总结

MySQL 提供了多种日期函数,方便开发者处理复杂的日期和时间逻辑。在编写查询时,根据实际需求选择合适的函数,并注意格式化符号的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值