获取当前日期和时间
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
网友评论