• MySQL:日期函数整理


    文档

    获取日期时间

    函数描述
    NOW返回当前日期和时间
    CURDATE返回当前日期
    CURRENT_DATE返回当前日期
    CURRENT_TIME返回当前时间
    CURRENT_TIMESTAMP返回当前日期和时间
    CURTIME返回当前时间
    LOCALTIME返回当前日期和时间
    LOCALTIMESTAMP返回当前日期和时间
    SYSDATE返回当前日期和时间
    FROM_DAYS从数字日期值返回日期
    MAKEDATE根据年份和天数值创建并返回日期
    MAKETIME根据小时、分钟和秒值创建并返回时间
    SEC_TO_TIME根据指定的秒数返回一个时间值
    STR_TO_DATE根据字符串和格式返回日期
    TIMESTAMP根据日期或日期时间值返回一个日期时间值

    日期属性

    函数描述
    DATE_FORMAT格式化日期
    TIME_FORMAT按指定格式格式化时间
    EXTRACT从给定日期提取部分
    DATE从日期时间表达式中提取日期部分
    TIME从给定时间/日期时间中提取时间部分
    YEAR返回给定日期的年份部分
    QUARTER返回给定日期值的一年中的季度
    MONTH返回给定日期的月份部分
    MONTHNAME返回给定日期的月份名称
    DAYOFMONTH / DAY返回给定日期的月份日期
    HOUR返回给定日期的小时部分
    MINUTE返回时间/日期时间的分钟部分
    SECOND返回时间/日期时间的秒部分
    MICROSECOND返回时间/日期时间的微秒部分
    TIME_TO_SEC将时间值转换为秒
    DAYOFYEAR返回给定日期的一年中的哪一天
    DAYOFWEEK返回给定日期的星期索引
    WEEKDAY返回给定日期的星期编号
    DAYNAME返回给定日期的星期名称
    WEEK返回给定日期的周数
    WEEKOFYEAR返回给定日期的周数
    YEARWEEK返回给定日期的年和周数
    TO_DAYS返回日期和日期"0000-00-00"之间的天数

    日期计算

    函数描述
    ADDDATE将时间/日期间隔添加到日期,然后返回日期
    ADDTIME将时间间隔添加到时间/日期时间,然后返回时间/日期时间
    DATEDIFF返回两个日期值之间的天数
    DATE_ADD将时间/日期间隔添加到日期,然后返回日期
    DATE_SUB从日期中减去时间/日期间隔,然后返回日期
    PERIOD_ADD将指定的月数添加到期间
    PERIOD_DIFF返回两个句点之间的差
    SUBDATE从日期中减去时间/日期间隔,然后返回日期
    SUBTIME从日期时间中减去一个时间间隔,然后返回时间/日期时间
    TIMEDIFF返回两个时间/日期时间表达式之间的差异
    LAST_DAY提取给定日期当月的最后一天

    ADDDATE

    将时间/日期间隔添加到日期,然后返回日期

    语法

    ADDDATE(date, INTERVAL value addunit)
    
    • 1
    • addunit常用值
      • YEAR
      • MONTH
      • DAY
      • HOUR
      • MINUTE
      • SECOND

    示例

    mysql> SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
    +----------------------------------------+
    | ADDDATE("2017-06-15", INTERVAL 10 DAY) |
    +----------------------------------------+
    | 2017-06-25                             |
    +----------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    DATE_ADD

    将时间/日期间隔添加到日期,然后返回日期

    语法

    DATE_ADD(date, INTERVAL value addunit)
    
    • 1
    • addunit常用值
      • YEAR
      • MONTH
      • DAY
      • HOUR
      • MINUTE
      • SECOND
    SELECT DATE_ADD("2017-06-15", INTERVAL 2 DAY);
    +----------------------------------------+
    | DATE_ADD("2017-06-15", INTERVAL 2 DAY) |
    +----------------------------------------+
    | 2017-06-17                             |
    +----------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    DATE_SUB

    从日期中减去时间/日期间隔,然后返回日期

    语法

    DATE_SUB(date, INTERVAL value interval)
    
    • 1
    • addunit常用值
      • YEAR
      • MONTH
      • DAY
      • HOUR
      • MINUTE
      • SECOND

    示例

    SELECT DATE_SUB("2017-06-15", INTERVAL 2 DAY);
    +----------------------------------------+
    | DATE_SUB("2017-06-15", INTERVAL 2 DAY) |
    +----------------------------------------+
    | 2017-06-13                             |
    +----------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    DATEDIFF

    返回两个日期值之间的天数

    语法

    DATEDIFF(date1, date2)
    
    • 1

    示例

    SELECT DATEDIFF("2017-01-10", "2017-01-01");
    +--------------------------------------+
    | DATEDIFF("2017-01-10", "2017-01-01") |
    +--------------------------------------+
    |                                    9 |
    +--------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    MONTH

    返回给定日期的月份部分(从 1 到 12 的数字)

    语法

    MONTH(date)
    
    • 1

    示例

    mysql> SELECT MONTH("2017-06-15");
    +---------------------+
    | MONTH("2017-06-15") |
    +---------------------+
    |                   6 |
    +---------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    MONTHNAME

    返回给定日期的月份名称

    语法

    MONTHNAME(date)
    
    • 1

    示例

    mysql> SELECT MONTHNAME("2017-06-15");
    +-------------------------+
    | MONTHNAME("2017-06-15") |
    +-------------------------+
    | June                    |
    +-------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例

    -- 返回当前日期
    mysql> SELECT CURDATE();
    +------------+
    | CURDATE()  |
    +------------+
    | 2023-10-24 |
    +------------+
    
    -- 返回当前日期
    mysql> SELECT CURRENT_DATE();
    +----------------+
    | CURRENT_DATE() |
    +----------------+
    | 2023-10-24     |
    +----------------+
    
    -- 返回当前时间
    mysql> SELECT CURRENT_TIME();
    +----------------+
    | CURRENT_TIME() |
    +----------------+
    | 11:39:45       |
    +----------------+
    
    -- 返回当前时间
    mysql> SELECT CURTIME();
    +-----------+
    | CURTIME() |
    +-----------+
    | 11:40:44  |
    +-----------+
    
    -- 返回当前日期和时间
    mysql> SELECT CURRENT_TIMESTAMP();
    +---------------------+
    | CURRENT_TIMESTAMP() |
    +---------------------+
    | 2023-10-24 11:40:12 |
    +---------------------+
    
    -- 返回当前日期和时间
    mysql> SELECT LOCALTIME();
    +---------------------+
    | LOCALTIME()         |
    +---------------------+
    | 2023-10-24 14:09:55 |
    +---------------------+
    
    -- 返回当前日期和时间
    mysql> SELECT LOCALTIMESTAMP();
    +---------------------+
    | LOCALTIMESTAMP()    |
    +---------------------+
    | 2023-10-24 14:10:22 |
    +---------------------+
    
    -- 返回当前日期和时间
    mysql> SELECT NOW();
    +---------------------+
    | NOW()               |
    +---------------------+
    | 2023-10-24 14:12:47 |
    +---------------------+
    
    
    -- 返回当前日期和时间
    mysql> SELECT SYSDATE();
    +---------------------+
    | SYSDATE()           |
    +---------------------+
    | 2023-10-24 14:17:24 |
    +---------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    -- 提取日期部分
    mysql> SELECT DATE("2017-06-15 09:34:21");
    +-----------------------------+
    | DATE("2017-06-15 09:34:21") |
    +-----------------------------+
    | 2017-06-15                  |
    +-----------------------------+
    
    -- 从时间表达式中提取时间部分
    mysql> SELECT TIME("2017-08-15 19:30:10");
    +-----------------------------+
    | TIME("2017-08-15 19:30:10") |
    +-----------------------------+
    | 19:30:10                    |
    +-----------------------------+
    
    -- 返回给定日期的年份部分(从 1000 到 9999 的数字)
    mysql> SELECT YEAR("2017-06-15");
    +--------------------+
    | YEAR("2017-06-15") |
    +--------------------+
    |               2017 |
    +--------------------+
    
    -- 返回给定日期的小时部分
    mysql> SELECT HOUR("2017-06-20 09:34:00");
    +-----------------------------+
    | HOUR("2017-06-20 09:34:00") |
    +-----------------------------+
    |                           9 |
    +-----------------------------+
    
    -- 从给定日期提取部分
    SELECT EXTRACT(MONTH FROM "2017-06-15");
    +----------------------------------+
    | EXTRACT(MONTH FROM "2017-06-15") |
    +----------------------------------+
    |                                6 |
    +----------------------------------+
    
    -- 返回给定日期的月份日期,等于 DAY() 函数
    mysql> SELECT DAYOFMONTH("2017-06-15");
    +--------------------------+
    | DAYOFMONTH("2017-06-15") |
    +--------------------------+
    |                       15 |
    +--------------------------+
    
    -- 返回某个日期的工作日索引
    -- 1=星期日,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六
    mysql> SELECT DAYOFWEEK("2017-06-15");
    +-------------------------+
    | DAYOFWEEK("2017-06-15") |
    +-------------------------+
    |                       5 |
    +-------------------------+
    
    -- 返回日期的工作日编号
    -- 0 = 星期一,1 = 星期二,2 = 星期三,3 = 星期四,4 = 星期五,5 = 星期六,6 = 星期日
    mysql> SELECT WEEKDAY("2017-06-15");
    +-----------------------+
    | WEEKDAY("2017-06-15") |
    +-----------------------+
    |                     3 |
    +-----------------------+
    
    -- 返回给定日期的星期名称
    mysql> SELECT DAYNAME("2017-06-15");
    +-----------------------+
    | DAYNAME("2017-06-15") |
    +-----------------------+
    | Thursday              |
    +-----------------------+
    
    -- 返回给定日期的一年中的哪一天(从 1 到 366 的数字)
    mysql> SELECT DAYOFYEAR("2017-06-15");
    +-------------------------+
    | DAYOFYEAR("2017-06-15") |
    +-------------------------+
    |                     166 |
    +-------------------------+
    
    -- 返回时间/日期时间的微秒部分(从 0 到 999999)
    mysql> SELECT MICROSECOND("2017-06-20 09:34:00.000023");
    +-------------------------------------------+
    | MICROSECOND("2017-06-20 09:34:00.000023") |
    +-------------------------------------------+
    |                                        23 |
    +-------------------------------------------+
    
    -- 返回时间/日期时间的分钟部分(从 0 到 59)
    mysql> SELECT MINUTE("2017-06-20 09:34:00");
    +-------------------------------+
    | MINUTE("2017-06-20 09:34:00") |
    +-------------------------------+
    |                            34 |
    +-------------------------------+
    
    -- 提取给定日期该月的最后一天
    mysql> SELECT LAST_DAY("2017-06-20");
    +------------------------+
    | LAST_DAY("2017-06-20") |
    +------------------------+
    | 2017-06-30             |
    +------------------------+
    
    -- 返回给定日期值(从 1 到 4 的数字)的一年中的季度
    mysql> SELECT QUARTER("2017-06-15");
    +-----------------------+
    | QUARTER("2017-06-15") |
    +-----------------------+
    |                     2 |
    +-----------------------+
    
    -- 返回时间/日期时间的秒部分(从 0 到 59)
    mysql> SELECT SECOND("23:59:59");
    +--------------------+
    | SECOND("23:59:59") |
    +--------------------+
    |                 59 |
    +--------------------+
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122

    DATE_FORMAT

    按指定格式化日期

    语法

    DATE_FORMAT(date, format)
    
    • 1
    格式描述
    %a工作日的缩写名称(周日至周六)
    %b缩写月份名称(1 月至 12 月)
    %c数字月份名称(0 到 12)
    %D以数字形式表示的月份中的日期,后跟后缀 (1st, 2nd, 3rd, …)
    %d以数值表示的月份中的日期(01 到 31)
    %e以数字形式表示的月份中的日期(0 到 31)
    %f微秒(000000 到 999999)
    %H小时(00 到 23)
    %h小时(00 到 12)
    %I小时(00 到 12)
    %i分钟(00 到 59)
    %j一年中的某一天(001 到 366)
    %k小时(0 到 23)
    %l小时(1 到 12)
    %M完整的月份名称(1 月至 12 月)
    %m数字形式的月份名称(00 到 12)
    %p上午或下午
    %r12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM)
    %S秒(00 到 59)
    %s秒(00 到 59)
    %T24 小时制时间 (hh:mm:ss)
    %U星期天是一周的第一天(00 到 53)
    %u星期一是一周的第一天的星期(00 到 53)
    %V星期天是一周的第一天(01 到 53)。与 %X 一起使用
    %v星期一是一周的第一天的星期(01 到 53)。与 %X 一起使用
    %W完整的工作日名称(周日至周六)
    %w星期天=0,星期六=6
    %X星期天是一周的第一天的星期。与 %V 一起使用
    %x星期一是一周的第一天的一周的年份。与 %V 一起使用
    %Y4 位数字形式的年份
    %y2 位数字形式的年份

    示例

    mysql> SELECT DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s");
    +---------------------------------------------------------+
    | DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s") |
    +---------------------------------------------------------+
    | 2017-06-01 09:01:02                                     |
    +---------------------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    AcrelEMS高速公路微电网能效管理平台与智能照明解决方案智慧点亮隧道
    施耐德PLC之间无线Modbus通讯说明
    【想法】取代NI的 PCIe-8371
    传统行业+NFT然后迎来新增长点?
    一篇长文叙述Linux内核虚拟地址空间的基本概括
    【状态估计】基于FOMIAUKF、分数阶模块、模型估计、多新息系数的电池SOC估计研究(Matlab代码实现)
    【毕业设计】基于单片机的宠物自动喂食系统 - 物联网 嵌入式 单片机 宠物喂食系统 宠物投食系统
    Django视图层模版层全面解析全网最细的教程
    Java进阶(8)——抽象类与接口
    【FPGA教程案例36】通信案例6——基于vivado核的FFT傅里叶变换开发以及verilog输入时序配置详解,通过matlab进行辅助验证
  • 原文地址:https://blog.csdn.net/mouday/article/details/134012277