Mysql日期时间函数

2021-05-24  本文已影响0人  haha_writing

获取当前日期和时间

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
上一篇下一篇

猜你喜欢

热点阅读