• MySQL日期时间函数一网打尽


    888

    1. 获取时间

    函数 功能 返回格式
    CURDATE(), CURRENT_DATE() 返回当前日期,只包含年、月、日 2022-03-08
    CURTIME(), CURRENT_TIME() 返回当前时间,只包含时、分、秒 19:35:46
    NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP() 返回当前系统日期和时间 2022-03-08 19:37:07
    UTC_DATE() 返回UTC(世界标准时间)日期 2022-03-08
    UTC_TIME() 返回UTC(世界标准时间)时间 11:38:52

    2. 日期与时间戳的转换

    函数 功能 返回格式
    UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()) 以UNIX时间戳的形式返回当前时间 1646739875
    FROM_UNIXTIME(1646739875) 将UNIX时间戳转换为普通时间格式 2022-03-08 19:44:35

    3. 获取月份、星期、星期数、天数等函数

    函数 功能 返回格式
    YEAR(NOW()),/MONTH(NOW()),/DAY(NOW()) 返回年/月/日 2022/3/8
    HOUR(NOW()), /MONTH(NOW()), /DAY(NOW()) 返回时/分/秒 19/3/8
    MONTHNAME(NOW()) 返回英文月份 March
    DAYNAME(NOW()) 返回星期几 Tuesday
    WEEKDAY(NOW()) 返回周几(从0开始) 1(星期二)
    QUARTER(NOW()) 返回日期对应的季度,范围1-4 1
    WEEK(NOW()), WEEKOFYEAR(NOW()) 返回一年中的第几周 10
    DAYOFYEAR(NOW()) 返回一年中的第几天 67
    DAYOFMONTH(NOW()) 返回所在月份中的第几天 8
    DAYOFWEEK(NOW()) 返回周几(周日为1) 3(星期二)

    4. 日期的操作函数

    -- 返回指定日期中的特定部分,type指定返回的值;
    SELECT EXTRACT(TYPE FROM NOW()) FROM DUAL;
    

    TYPE的含义与取值:

    type取值 含义 返回值
    MICROSECOND 返回毫秒数
    SECOND 返回秒数 12
    MINUTE 返回分钟数 25
    HOUR 返回小时数 20(24小时制)
    DAY 返回天数 8
    WEEK 返回日期在一年中的第几个星期 10
    MONTH 返回日期在一年中的第几个月 3
    QUARTER 返回日期在一年中和第几个季度 1
    YEAR 返回日期的年份 2022
    SECOND_MICROSECOND 返回秒和毫秒值 34000000
    MINUTE_MICROSECOND 返回分钟和毫秒值 3716000000
    MINUTE_SECOND 返回分钟和秒值 3851(2022-03-08 20:38:51)
    HOUR_MICROSECOND 返回小时和毫秒值 203944000000(2022-03-08 20:39:44)
    HOUR_SECOND 返回小时和秒值 204025(2022-03-08 20:40:25)
    HOUR_MINUTE 返回小时和分钟值 2040(2022-03-08 20:40:52)
    DAY_MICROSECOND 返回天和毫秒值 204126000000(2022-03-08 20:41:26)
    DAY_SECOND 返回天和秒值 204208(2022-03-08 20:42:08)
    DAY_MINUTE 返回天和分钟值 2043(2022-03-08 20:43:17)
    DAY_HOUR 返回天和小时 20(2022-03-08 20:43:54)
    YEAR_MONTH 返回年和月 202203(2022-03-08 20:44:23)

    5. 时钟和秒钟转换的函数

    -- 将time转化为秒并返回结果值,转化公式为:小时*3600*分钟*69+秒
    SELECT TIME_TO_SEC('2022-03-08 20:44:23')
    FROM DUAL;
    -- 转换结果:74663
    
    
    
    -- seconds转化为时分秒
    SELECT SEC_TO_TIME(74663) FROM DUAL;  
    -- 转换结果:20:44:23
    

    6. 计算日期和时间的函数

    6.1 计算时间间隔

    函数 功能 备注
    DATE_ADD(datetime, INTERVAL expr type),ADDDATE(datetime, INTERVAL expr type) 计算时间间隔(时间增加) expr表示时间间隔,type值见下表
    DATE_SUB(datetime, INTERVAL expr type),SUBDATE(datetime, INTERVAL expr type) 计算时间间隔(时间减少) expr表示时间间隔,type值见下表

    举例:

    SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL 2 DAY) AS A FROM DUAL;
    SELECT ADDDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) AS B FROM DUAL;
    -- 返回相同结果:2022-03-10 20:43:54
    
    
    SELECT DATE_SUB('2022-03-08 20:43:54', INTERVAL 2 DAY) C FROM DUAL;
    SELECT SUBDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) D FROM DUAL;
    -- 返回相同结果:2022-03-06 20:43:54
    
    
    -- 间隔两和类型的时间时可以用冒号和下划线,要用单引号
    SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
    SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2_2' DAY_HOUR ) AS A FROM DUAL;
    -- 返回相同结果:2022-03-10 22:43:54
    
    

    type值如下表:

    type间隔类型 含义
    HOUR 小时
    MINUTE 分钟
    SECOND
    YEAR
    MONTH
    DAY
    YEAR_MONTH 年和月
    DAY_HOUR 日和小时
    DAY_MINUTE 日和分钟
    DAY_SECOND 日和秒
    HOUR_MINUTE 小时和分钟
    HOUR_SECOND 小时和秒
    MINUTE_SECOND 分钟和秒

    6.2 时间计算

    函数 功能 返回格式
    ADDTIME(time1, expr) 添加expr到time1并返回结果 2022-03-09 21:44:55
    SUBTIME(time2, expr) time1减去expr并返回结果 2022-03-07 19:42:53
    DATEDIFF(time1, time2) 返回time1与time2的日期间隔(time1-time2) -1(天)
    TIMEDIFF(time1, time2) 返回time1与time2的时间间隔(time1-time2) 26:03:45(时分秒)
    FROM_DAYS(N) 返回从0000年1月1日起,N天以后的日期 0002-09-27
    TO_DAYS(time) 返回时间time距离0000年1月1日的天数 738588
    LAST_DAY(time) 返回time所在月份的最后一天的日期 2022-03-31
    MAKEDATE(year, n) 针对给定年份与所在年份中的天数返回一个日期 2022-04-10
    MAKETIME(h, m, s) 将给定的小时、分钟和秒组合成时间并返回 10:20:33
    PERIOD_ADD(time,n) 此函数将给定时期的给定月份数添加到格式YYMM或YYYYMM中 20220309

    举例:

    SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
    -- 返回:2022-03-10 22:43:54
    
    SELECT ADDTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
    -- 返回:2022-03-09 21:44:55
    
    SELECT SUBTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
    -- 返回:2022-03-07 19:42:53
    
    SELECT DATEDIFF('2022-03-08 20:43:54', '2022-03-09 20:43:54') AS A FROM DUAL;
    -- 返回:-1
    
    SELECT TIMEDIFF('2022-03-09 20:43:54', '2022-03-08 18:40:09') AS B FROM DUAL;
    -- 返回:26:03:45
    
    SELECT FROM_DAYS(1000) FROM DUAL;
    -- 返回:0002-09-27
    
    SELECT TO_DAYS('2022-03-09 20:43:54') FROM DUAL;
    -- 返回:738588
    
    SELECT LAST_DAY('2022-03-09 20:43:54') FROM DUAL;
    -- 返回:2022-03-31
    
    SELECT MAKEDATE(2022, 100) FROM DUAL;
    -- 返回:2022-04-10
    
    SELECT MAKETIME(10, 20, 33) FROM DUAL;
    -- 返回:10:20:33
    
    SELECT PERIOD_ADD(20220308,1) FROM DUAL;
    -- 返回:20220309
    

    7. 日期的格式化与解析

    函数 功能 返回格式
    DATE_FORMAT(date,fmt) 按照字符串fmt格式化日期date值
    TIME_FORMAT(time,fmt) 按照字符串fmt格式化时间time值
    STR_TO_DATE(str, fmt) 按照字符串fmt对str进行解析,解析为一个日期

    fmt格式如下:

    格式符 说明 格式符 说明
    %Y 4位数字表示年份 %y 表示两位数字的年份
    %M 月名表示月份(January,....) %m 两位数字表示月份
    %b 缩写的月名(Jan.,Feb.,....) %d 两位数字表示月中的天数
    %D 英文后缀表示月中的天数(1st,2nd,3rd,...) %c 数字表示月份(1,2,3。。)
    %e 数字形式表示月中的天数(1,2,3,4,5.....) %h 两位数字表示小时,12小时制(01,02。。)
    %H 两位数字表示小数,24小时制(01,02..) %l 数字形式表示小时,12小时制(1,2。。)
    %k 数字形式的小时,24小时制(1,2,3) %S和%s 两位数字表示秒(00, 01, 02。。)
    %i 两位数字表示分钟(00,01,02) %a 一周中的星期缩写(Sun)
    %W 一周中的星期名称(Sunday...)
    %w 以数字表示周中的天数(0=Sunday,1=Monday....)
    %j 以3位数字表示年中的天数(001,002...) %U 以数字表示年中的第几周,(1,2,3。。)其中Sunday为周中第一天
    %u 以数字表示年中的第几周,(1,2,3。。)其中Monday为周中第一天
    %T 24小时制 %r 12小时制
    %p AM或PM %% 表示%

    举例如下:

     SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
     -- 返回结果:09:58:12
    
    函数 功能 返回格式
    GET_FORMAT(date_type,format_type) 返回日期字符串的显示格式

    format_type取值如下:

    image-20220309095726335

    举例如下:

     SELECT GET_FORMAT(DATE, 'USA');
     -- 返回:%m.%d.%Y
    

    欢迎关注我的公众号:『深海云帆』

  • 相关阅读:
    Oracle中的rownum
    关于Oracle12c中无scott用户的问题
    docker 1.13 是什么版本?
    ImportError: cannot import name 'SQLALchemy'
    mac配置iterm2,iterm2使用方法
    docker 时区
    jupyter 500 : Internal Server Error
    sublime conda 切换环境
    mac frida安装(使用网易木木模拟器)
    \u开头两个字符的是什么编码?
  • 原文地址:https://www.cnblogs.com/hqzmss/p/15984111.html
Copyright © 2020-2023  润新知