Mysql的日期函數之curdate、date_add、date_sub、datediff、timediff


本篇主要講述Mysql的curdate、curtime、date_add、date_sub、datediff、timediff等函數。

1. 獲取當前的日期時間:now

select now();  #獲取當前的日期時間

2. 當前日期、時間:curdate、curtime

select curdate();   # 當前日期

select curtime();   # 當前時間

3.  日期加減:date_add、date_sub,講述date_add,則date_sub與此類似。

select date_add(now(),interval '2' day);  #后2天
select date_add(now(),interval '2' hour);
select date_add(now(),interval '2' minute);
select date_add(now(),interval '2' second);
select date_add(now(),interval '2' week);
select date_add(now(),interval '2' month);
select date_add(now(),interval '2' quarter); #季度
select date_add(now(),interval '2' year);
select date_add(now(),interval '2:10:40' hour_second); #可以一次性從時分秒分別變化
select date_add(now(),interval '-2:10:40' hour_second); #可以一次性從時分秒分別變化,負號表示減,過去的時刻

函數形式:DATE_ADD(date,INTERVAL expr unit)  ——  DATE_SUB(date,INTERVAL expr unit)

expr:表示時間間隔值

unit:單位

date_sub參數參考date_add即可

其中,unit的取值可以為:

4. 日期差異函數:datediff

select datediff('2020-02-20', '2020-01-30')  #前面的日期減去后面的日期,返回天數
select datediff('2020-02-20', '2020-04-10')  #前面的日期減去后面的日期,返回天數
select datediff('2020-02-20 08:20:30', '2020-04-10 10:54:43')  #參與運算的是日期

5. timediff(該函數的結果有范圍限制)與 timestampdiff —— 更強大

# timediff
select timediff('12:23:10','10:10:35') diff_time;  #時間差,時分秒,但是該函數的結果有范圍限制,只從:從-838:59:59到838:59:59
select timediff('2020-02-02 12:00:00','12:00:00') as diff_time;   #前后格式不一致時,為Null 
select timediff('2020-01-01 00:00:00', '2020-04-01 00:00:00') as diff_hour; #結果有誤,因為超出限制,事實上,3個月的時間,值遠比結果大,要得到正確的,可以用timestampdiff # 功能最多的方式可以是:timestampdiff select timestampdiff(hour, '2020-01-01 00:00:00', '2020-04-01 00:00:00') as diff_hour; #返回的是相差的小時 select timestampdiff(day, '2020-01-01 00:00:00', '2020-02-01 00:00:00') as diff_day; #返回的是相差的天數 select timestampdiff(month, '2020-01-01 00:00:00', '2020-02-01 00:00:00') as diff_month; #返回的是相差的月份 select timestampdiff(year, '2020-01-01 00:00:00', '2020-02-01 00:00:00') as diff_year; #返回的是相差的年份 select timestampdiff(second, '2020-01-01 01:10:10', '2020-01-01 00:00:00') as diff_second; #返回的是相差的秒數 select timestampdiff(minute, '2020-01-01 01:10:10', '2020-01-01 00:00:00') as diff_minute; #返回的是相差的分鍾

 

 

Mysql更多時間相關函數、時間戳等可參考:

https://www.cnblogs.com/qi-yuan-008/p/11878640.html

 

參考:

https://www.runoob.com/sql/func-date-add.html

https://www.cnblogs.com/jpfss/p/11131540.html

https://www.runoob.com/sql/func-datediff-mysql.html

https://blog.csdn.net/moakun/article/details/82528152


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM