大纲


    首页 mysql基础教程[basic] 详情
    mysql日期时间函数

    总结了mysql日期时间函数的用法

    获取当前系统的日期时间

    • curdate()/current_date() 获取当前日期,按照 yyyy-MM-dd 或者 yyyyMMdd格式返回
    • curtime()/current_time() 获取当前时间,按照 hh:mm:ss 或者 hhmmss格式返回
    • current_timestamp()    localtime()    now()    sysdate() 获取当前日期和时间
    • 都有 字符串 和 数字 语境两种方式,默认返回字符串语境,func + 0 转换为 数字语境
    -- 当前日期
    select current_date()               -- '2020-08-30' 字符串语境返回 yyyy-MM-dd
    select current_date() + 0       -- '20200830' 数字语境返回yyyyMMdd
    
    • utc_date():返回世界标准日期,yyyy-MM-dd\yyyyMMdd
    • utc_time():返回世界标准时间,hh:mm:ss\hhmmss....
    select utc_time()               -- 15:45:15
    select utc_time() + 0       --154515.000000
    

    时间戳和普通时间日期格式互转

    • unix_timestamp([d]):普通时间戳转unix时间戳,d 为可选项,不填返回当前时间戳
    • from_unixtime(str):unix时间戳转为普通日期时间格式,yyyy-MM-dd hh:mm:ss
    select unix_timestamp('2018-10-01 23:42:07.0')          -- 1538408527
    select from_unixtime(1538408527)                                        -- 2018-10-01 23:42:07.0
    

    获取日期属性

    select year(now())                                  -- 返回年份 2020
    select quarter(now())                               -- 获取季度 1
    select month(now())                                 -- 获取月份 03
    select monthname(now())                         -- 获取月份英文名称 august
    
    -- 获取星期
    -- 星期日索引,0-周日,1-周一,........,7-周六
    -- 工作日索引,0-周一............,7-周日
    select dayname(now())                               -- Monday
    select dayofweek(now())                         -- 2
    select weekday(now())                               -- 0
    
    -- 一年第几周
    -- week(d,mode) 
    -- mode指定,周是从周一还是周日算起,返回周数在0-52 或者0-53之间
    -- 如果忽略,则使用default_week_format系统变量的值
    -- SHOW VARIABLES LIKE 'default_week_format' 查看
    select week(now(),0)                                -- 35
    
    -- 获取第几日
    select dayofyear(d)                 
    select dayofmonth(d)                            
    select dayofweek(d)     -- 1-周日........7-周六
    
    select hour(time)         -- 返回小时,范围0-23
    select minute(time)   -- 返回分钟,范围0-59
    select second(time)   -- 返回秒,范围0-59
    

    时间日期计算

    -- 日期时间加减运算
    -- date_add(d,interval expr type)\adddate()
    -- date_sub(d,interval expr type)\subdate()
    -- addtime(d,expr)\subtime()
    -- datediff(d1,d2)
    -- type 格式:second\minute\hour\day\month\year\及其组合形式
    select date_add('2020-08-30',interval 2 day)                -- 2020-09-01
    select date_sub('2020-08-30',interval 1 month)      -- 2020-07-30
    select addtime('2020-08-30 08:00:00','10:20:30')    -- 2020-08-30 18:20:30
    select datediff('2020-08-30','2020-08-15')                  -- 15
    
    -- period_add(p,n)
    -- 增加n个月到阶段p(YYMM/YYYYMM),以格式YYYYMM返回
    select period_add(2008,2)                                                   -- 202010
    
    -- period_diff(p1,p2)
    -- p1,p2格式为yyyymm或者yymm格式
    select period_diff(1901,202002)                                     -- -12
    

    时间日期格式化

    • date_format(d,format_str)
    • str_to_date(d, format_str)
    select date_format(now(),'%y%m%d')                              -- 200830
    select str_to_date('2016-01-02', '%Y-%m-%d %H')     -- '2017-01-02 00:00:00.0'  
    select from_unixtime(1451997924)                                    -- '2017-01-05 20:45:24'
    

    其它

    • to_days(date)    返回一个天数(从0年开始)
    • from_days(n)    给出天数,返回日期
    select to_days('2020-08-30')                -- 738032
    select from_days(738032)                        -- 2020-08-30
    

    日期时间的format

      含义
    %S、%s 两位数字形式的秒( 00,01, ..., 59)
    %I、%i 两位数字形式的分( 00,01, ..., 59)
    小时  %H 24小时制,两位数形式小时(00,01, ...,23)
    %h 12小时制,两位数形式小时(00,01, ...,12)
    %k 24小时制,数形式小时(0,1, ...,23)
    %l 12小时制,数形式小时(0,1, ...,12)
    %T 24小时制,时间形式(HH:mm:ss)
    %r  12小时制,时间形式(hh:mm:ss AM 或 PM)
    %p  AM上午或PM下午 
      周   %W 一周中每一天的名称(Sunday,Monday, ...,Saturday)
     %a 一周中每一天名称的缩写(Sun,Mon, ...,Sat) 
    %w  以数字形式标识周(0=Sunday,1=Monday, ...,6=Saturday) 
    %U 数字表示周数,星期天为周中第一天
    %u 数字表示周数,星期一为周中第一天
    %d  两位数字表示月中天数(01,02, ...,31)
    %e   数字表示月中天数(1,2, ...,31)
     %D 英文后缀表示月中天数(1st,2nd,3rd ...) 
     %j 以三位数字表示年中天数(001,002, ...,366) 
    %M  英文月名(January,February, ...,December) 
    %b  英文缩写月名(Jan,Feb, ...,Dec) 
    %m  两位数字表示月份(01,02, ...,12)
    %c  数字表示月份(1,2, ...,12) 
    %Y  四位数字表示的年份(2015,2016...)
    %y   两位数字表示的年份(15,16...)
    文字输出  %文字  直接输出文字内容
    模式 星期的第一天 范围 星期 1 是第一天
    0 Sunday 0-53 一年中多一个星期天
    1 Monday 0-53 一年多3天
    2 Sunday 1-53 一年中多一个星期天
    3 Monday 1-53 一年多3天
    4 Sunday 0-53 一年多3天
    5 Monday 0-53 一年中多一个星期一
    6 Sunday 1-53 一年多3天
    7 Monday 1-53 一年中多一个星期一
    评论
    您尚未登录,请 登录 后评论
    共 0 条评论 | 欢迎尬评