通过做45题,才发现mysql中的日期和时间函数的丰富,特别记录下,
1.now()/current_timestamp()返回当前的日期和时间
mysql> SELECT NOW();
| 2020-01-06 11:18:27 |
mysql> select current_timestamp();
| 2020-01-06 11:18:42 |
2.curdate()/current_date() 返回当前日期
select curdate();
2020-01-06
select current_date();
| 2020-01-06
3.curtime()/current_time() 返回当前时间
select curtime();
| 11:25:56 |
mysql> select current_time();
| 11:26:08 |
4.UNIX_TIMESTAMP(date) 获取日期的unix时间戳,date默认当前日期时间
select unix_timestamp();
| 1578284688
5.from_unixtime(时间戳) 获取UNIX时间戳的日期时间值
select from_unixtime(1578284688);
| 2020-01-06 12:24:48
6.adddate(t,interval n type),从t时间,往后加n年/季度/月/周/天/时/分/秒/微秒,subdate()函数,从t开始,减n。
type:year/quarter/month/week/day/hour/minute/secode/microsecode
默认情况下,adddate(t,n)从t时间,加n天,
select adddate(now(),1);
| adddate(now(),1) |
| 2020-01-07 12:45:03 |
select adddate(now(), interval 1 hour);
| 2020-01-06 14:05:49 |
7.date_add(t,interval n type),和adddate()函数作用差不多
select date_add(now(),interval 1 year);
| 2021-01-06 12:47:04 |
但没有默认,date_add(now(),1),会报错,
8.addtime(t, n),从t时间,往后加n秒。
9.选取日期时间的各个部分:日期、时间、年、季度、月、周、日、小时、分钟、秒、微秒,
set @d:=now()
select date(@d)/time(@d)/year(@d)/quarter(@d)/month(@d)/week(@d)/day(@d)......
也可以使用EXTRACT(type FROM d),
select extract(day from @d);
| 6
dayname(t) 字符串周几
monthname(t) 字符串几月
select dayname(@d);
| Monday |
10.如果想得到日期t时本周周几/本月第几天/本年第几天
dayofweek(t)/dayofmonth(t)/dayofyear(t),
dayofweek(t)日期 t 今天是星期几,1 星期日,2 星期一
mysql> select dayofweek(@d);
| dayofweek(@d) |
| 2 |
11.datediff(day1,day2),计算相差天数,day1-day2
select datediff("2019-01-06","2019-01-02");
| 4
12.timediff(time1,time2),计算相差小时数,time1-time2
mysql> select timediff("14:09:27","16:09:27");
| -02:00:00
13.timestampdiff(type,datetime1,datetime2),两个时间之差,datetime2-datetime1,
type:可转化为年或月或秒或....的单位
select timestampdiff(hour,"2019-01-02 16:09:27","2019-01-06 14:09:27");
| 94 |
14.date_format(t,表达式) ,按照表达式的样式提取时间t
表达式,有很多,可上网查询
select date_format(@d,"%Y-%m-%d %H:%i:%S");
| 2020-01-06 13:01:26 |