美文网首页
Mysql日期时间函数

Mysql日期时间函数

作者: haha_writing | 来源:发表于2021-05-24 17:12 被阅读0次

    获取当前日期和时间

    SELECT   
     curDate(),             //2021-01-01
     current_Date(),        //2021-01-01
     current_time(),        //15:00:20
     curtime(),             //15:00:20
     current_timestamp(),   // 2021-01-01 15:00:20
     now(),                 // 2021-01-01 15:00:20
     sysdate() ,            // 2021-01-01 15:00:20
     localtime(),           // 2021-01-01 15:00:20
     localtimestamp(),      // 2021-01-01 15:00:20
    

    格式化

    //按照表达式的格式显示时间。
    select DATE_FORMAT('2021-11-11 11:11:11','%Y-%m-%d %r')  //2021-11-11 11:11:11 AM
    select TIME_FORMAT('11:11:11','%r') //11:11:11 AM
    select STR_TO_DATE("August 10 2017","%M %d %Y") //2017-08-10
    

    时间提取

    // 提取日期部分
    SELECT DATE("2021-01-11 10:11:12");         -> 2021-01-11
    SELECT YEAR("2021-01-11 10:11:12");         -> 2021
    SELECT MONTH("2021-01-11 10:11:12");        -> 1
    SELECT MONTHNAME("2021-01-11 10:11:12");    -> January
    SELECT DAY("2021-01-11 10:11:12");          -> 11
    SELECT DAYNAME("2021-01-11 10:11:12");      -> Monday
    SELECT TIME("2021-01-11 10:11:12");    -> 10:11:12
    SELECT HOUR("2021-01-11 10:11:12");       -> 10
    SELECT MINUTE("2021-01-11 10:11:12");    -> 11
    SELECT SECOND("2021-01-11 10:11:12");   -> 12
    SELECT MICROSECOND("2021-06-20 09:34:00.000023");  //23
    SELECT QUARTER("2021-01-11 10:11:12");    -> 1, 返回第几季度,1到4。
    //可以使用提取函数
    SELECT EXTRACT(TYPE FROM d)
            TYPE的取值:
             1、MICROSECOND 
             2、SECOND
             3、MINUTE
             4、HOUR
             5、DAY
             6、WEEK
             7、MONTH
             8、QUARTER
             9、YEAR
             10、SECOND_MICROSECOND
             11、MINUTE_MICROSECOND
             12、MINUTE_SECOND
             13、HOUR_MICROSECOND
             14、HOUR_SECOND
             15、HOUR_MINUTE
             16、DAY_MICROSECOND
             17、DAY_SECOND
             18、DAY_MINUTE
             19、DAY_HOUR
             20、YEAR_MONTH
    

    时间计算

    // 计算日期之间相隔。日期和时间增加,减少。
    SELECT DATEDIFF('2001-01-01','2001-02-02')      // -32
    SELECT ADDDATE("2021-01-11 10:11:12", INTERVAL 10 DAY);  //2021-01-21 10:11:12
    SELECT DATE_ADD("2021-01-11 10:11:12",INTERVAL 10 DAY);  //2021-01-21 10:11:12 
    SELECT DATE_ADD("2021-01-11 10:11:12",INTERVAL 10 HOUR);  //2021-01-11 20:11:12 
    SELECT DATE_ADD("2021-01-11 10:11:12",INTERVAL 10 MINUTE);  //2021-01-11 10:21:12 
    SELECT DATE_ADD("2021-01-11 10:11:12",INTERVAL 10 SECOND);  //2021-01-11 10:11:22 
    SELECT DATE_SUB("2021-01-11 10:11:12",INTERVAL 10 HOUR);  //2021-01-11 00:11:12  同SUBDATE
    SELECT DATE_SUB("2021-01-11 10:11:12",INTERVAL 10 MINUTE);  //2021-01-11 10:01:12 同SUBDATE
    SELECT DATE_SUB("2021-01-11 10:11:12",INTERVAL 10 SECOND);  //2021-01-11 10:11:02 同SUBDATE
    SELECT ADDTIME("2021-01-11 10:11:12", "2:10:5");    //2021-01-11 12:21:17
    SELECT SUBTIME("2021-01-11 10:11:12", "2:10:5");    //2021-01-11  08:01:07
    SELECT TIMEDIFF("2021-01-11 10:11:12", "2021-01-11 15:11:12") // -5:00:00
    //TIMESTAMPDIFF(interval, datetime1,datetime2):计算两个时间之前的间隔,interval可以是
    //SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER, YEAR。
    //注意,TIMEDIFF和timestampdiff两者的计算正好相反。
    SELECT timestampdiff(HOUR, "2021-01-11 10:11:12", "2021-01-11 15:11:12") // 5,单位为小时。
    SELECT timestampdiff(HOUR, "2021-01-11 15:11:12", "2021-01-11 10:11:12") //- 5,单位为小时。
    SELECT timestampdiff(SECOND, "2021-01-11 10:11:12", "2021-01-11 15:11:12") // 18000,单位为秒。
    
    //PERIOD_ADD(P, N):增加N个月到周期P。P的格式为YYYYMM或者YYMM。
    SELECT PERIOD_ADD(201703, 5)  //201708
    //PERIOD_DIFF(period1,period2) 返回两个时段之间的月份差值
    SELECT PERIOD_DIFF(201710,201803) // -5
    
    //计算出某个时间
    //返回该日期当月的最后一天。
    SELECT LAST_DAY("2021-01-11 "); //2021-01-31 。
    // 返回0000年1月1日开始那天后的日期
    SELECT FROM_DAYS(666666); // 1825-04-09
    //计算日期距离0000年1月1日的天数
    SELECT TO_DAYS("1825-04-09"); // 666666
    

    获取时间位置

    SELECT DAYOFMONTH("2021-01-11 10:11:12"); //11,计算日期 d 是本月的第几天   
    SELECT DAYOFWEEK("2021-01-11 10:11:12"); //2, 今天是星期几,1 星期日,2 星期一,以此类推   
    SELECT DAYOFYEAR("2021-05-11 10:11:12"); //131, 计算日期 d 是本年的第几天
    SELECT WEEK("2021-01-11 10:11:12") //2 WEEK(d)计算日期 d 是本年的第几个星期,范围是 0 到 53
    SELECT WEEKOFYEAR("2021-01-11 10:11:12") //2 WEEK(d)计算日期 d 是本年的第几个星期,范围是 0 到 53
    //YEARWEEK(datae,mode)返回年份以及第几周(0到53)
    SELECT YEARWEEK("2021-01-01")  //202052
    SELECT YEARWEEK("2021-01-02") //202101
    

    组合时间

    select MAKEDATE(2021,40)    //2021-02-09,MAKEDATE(year, day-of-year)
    select MAKETIME(10, 11, 12); // 10:11:12,MAKETIME(hour, minute, second)
    

    单位转化

    //TIME_TO_SEC(t):时间转化为秒
    SELECT SEC_TO_TIME(4320) //01:12:00
    //SEC_TO_TIME(s):秒转化为时分秒的格式
    SELECT SEC_TO_TIME(01:12:30) //4350
    

    相关文章

      网友评论

          本文标题:Mysql日期时间函数

          本文链接:https://www.haomeiwen.com/subject/dqpxsltx.html