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

【实战篇】MySQL 时间字段的处理

MySQL 时间字段的处理

1、获取当前日期和时间

  • NOW():返回当前的日期和时间。

    # 2025-03-14 11:07:24
    SELECT NOW();
    
  • CURDATE():返回当前日期,不包含时间部分。

    # 2025-03-14
    SELECT CURDATE();
    
  • CURTIME():返回当前时间,不包含日期部分。

    # 11:07:24
    SELECT CURTIME();
    
  • UNIX_TIMESTAMP():返回当前时间的 Unix 时间戳。

    SELECT UNIX_TIMESTAMP();
    
  • FROM_UNIXTIME(unix_timestamp):将 Unix 时间戳转换为日期时间。

    SELECT FROM_UNIXTIME(1678783404);
    

2、提取日期或时间的特定部分

  • YEAR(date):返回日期的年份部分。

    SELECT YEAR('2025-03-14'); -- 2025
    
  • MONTH(date):返回日期的月份部分。

    SELECT MONTH('2025-03-14'); -- 3
    
  • DAY(date):返回日期的天部分。

    SELECT DAY('2025-03-14'); -- 14
    
  • HOUR(time):返回时间的小时部分。

    SELECT HOUR('11:03:24'); -- 11
    
  • MINUTE(time):返回时间的分钟部分。

    SELECT MINUTE('11:03:24'); -- 3
    
  • SECOND(time):返回时间的秒部分。

    SELECT SECOND('11:03:24'); -- 24
    

实战示例

-- 近三年条件过滤
and check_year BETWEEN YEAR (CURDATE()) - 2 AND YEAR (CURDATE())

3、时间差计算

  • TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2):返回两个日期时间表达式之间的差值,单位由第一个参数指定。
  • DateDiff():计算 第一个时间 和 第二个时间 的时间差,a - b
  • TIMEDIFF(time_expr1, time_expr2):返回两个时间表达式之间的差值。
SELECT TIMESTAMPDIFF(DAY, '2025-03-01', '2025-03-14'); # 13

SELECT DATEDIFF('2025-03-01', '2025-03-14'); # -13

SELECT TIMEDIFF('11:03:24', '10:00:00'); # '01:03:24'

4、格式化日期字段

# DATE_FORMAT(date, format):将日期格式化为指定的字符串
SELECT DATE_FORMAT('2025-03-01 11:03:24', '%Y-%m-%d'); -- '2025-03-01'

# STR_TO_DATE(str, format):将字符串按指定格式转换为日期
SELECT STR_TO_DATE('14-03-2025', '%d-%m-%Y'); -- 2025-03-14

5、时间提取

  • DATE():提取日期时间表达式的日期部分。
SELECT DATE('2025-03-14 11:03:24'); -- '2025-03-14'
  • TIME():提取日期时间表达式的时间部分。
SELECT TIME('2025-03-14 11:03:24'); -- '11:03:24'

6、日期的加减

(一)增加时间

# 日期 小于 当前日期加上 30 天
( my_date < CURDATE() + INTERVAL 30 DAY )

# 日期加上 30 天
ADDDATE(my_date, INTERVAL 30 DAY)

# 时间(time) 加上 2 小时
ADDTIME(my_time, '02:00:00')

函数解析:

  • ADDDATE(date, interval) 函数用于将指定的时间间隔(interval)添加到给定的日期(date)上。
  • ADDTIME(time, interval) 函数用于将指定的时间间隔(interval)添加到给定的时间(time)上。

(二)减少时间

# 一个日期减 30 天后,在'2024-01-27' 和 '2024-02-27' 的范围内的数据
( my_date - INTERVAL 30 DAY ) BETWEEN '2024-01-27' AND '2024-02-27'

# 一个日期中减去 30 天
ADDDATE(my_date, INTERVAL -30 DAY)

# 一个时间中减去 2 小时
ADDTIME(my_time, '-02:00:00')

# 当天减一天(即昨天)
DATE_SUB( CURDATE(), INTERVAL 1 DAY )

# 例如今天是 2024-7-12,则下面拼接后的时间为 2024-7-11 23:59:59
CONCAT( DATE_SUB( CURDATE(), INTERVAL 1 DAY ), ' 23:59:59' )

函数解析:

  • DATE_SUB(date, interval) 函数用于将指定的日期(date)上减去时间间隔(interval)。

http://www.kler.cn/a/586183.html

相关文章:

  • java学习笔记1
  • 【eNSP实战】三层交换机使用ACL实现网络安全
  • C++中的单例模式及具体应用示例
  • 阿里云dataworks入门操作
  • Go语言单元测试和基准测试
  • 一个网络安全产品设计文档
  • 「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处
  • 3D文物线上展览如何实现?
  • pythonSTL---sys
  • Upload-labs靶场通关(2)
  • DeepSeek 助力 C++ 开发:探索智能编程新境界
  • 大模型学习笔记------Llama 3模型架构之旋转编码(RoPE)
  • 【论文精读】Deformable DETR:用于端到端目标检测可变形 Transformer
  • PHP:从入门到进阶的全方位指南
  • 微软 System Center Configuration Manager(SCCM)的组件文件
  • tauri项目加载静态html和js文件,并打包发布
  • arm内核寄存器错误定位技巧【持续更新】
  • 生活在缝缝补补中前进
  • oralce sql 查询rownum1到1000的数据
  • 信息安全意识之安全组织架构图