2018-08-30:MySQL時間函數(shù)整理

--創(chuàng)建字段默認當前時間(修改使用MODFY)

? ? ? ALTER TABLE `table_name` ADD `CreateTime` DATETIME NOT NULL DEFAULT?CURRENT_TIMESTAMP;

--添加字段默認當前更新時間

? ? ? ALTER TABLE `table_name` ADD? `UpdateTime` TIMESTAMP? NOT NULL DEFAULT?CURRENT_TIMESTAMP?ON UPDATE CURRENT_TIMESTAMP?;

--查詢當前表中前天的數(shù)據(jù)

SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=2 AND?TO_DAYS(NOW())-TO_DAYS(createTime)>1;?


1. NOW()=CURDATE()+CURTIME();

2. DATE()函數(shù)返回日期或日期/時間表達式的日期部分。

語法:DATE(date):date?參數(shù)是合法的日期表達式或字段名。

3.?DATE_FORMAT() 函數(shù)用于以不同的格式顯示日期/時間數(shù)據(jù)。

語法:DATE_FORMAT(date,format)

當天:DATE_FORM(CURDETE(),'%Y-%M-%d %H:%i:%S');

4. DATE_SUB()函數(shù)從日期減去指定的時間間隔。

語法:DATE_SUB(date,INTERVAL expr type):

date?參數(shù)是合法的日期表達式。expr?參數(shù)是您希望添加的時間間隔。注意:type可以復合型的,比如 YEAR_MONTH。如果type不是復合型的,DATE_ADD和DATE_SUB其實可以通用,因為expr可以為一個負數(shù)

當月:DATE_FORM(DATE_SUB(CURDATE(),INTERVAL 0 MONTH),'%Y-%M-%d');

例子1:SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY)AS OrderPayDate FROM Orders;//給某個字段減去兩天顯示

例子2:SELECT?DATE_ADD('2013-01-18',INTERVAL '1 2' YEAR_MONTH);

//結果:2014-03-18;當expr只有一個值,會給MONTH使用

5.?EXTRACT() 函數(shù)用于返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。

語法:EXTRACT(unit FROM date):date?參數(shù)是合法的日期表達式。unit?參數(shù)可以是下列的值:SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR;

6.?DATEDIFF() 函數(shù)返回兩個日期之間的天數(shù)。

語法:DATEDIFF(date1,date2):date1?和?date2?參數(shù)是合法的日期或日期/時間表達式。

注釋:只有值的日期部分參與計算。date1?-date2?,返回可以為負。

7.YEAR(date) ,返回date的年份,范圍在1000到9999。

QUARTER(date) ,返回date一年中的季度,范圍1到4。

MONTH(date) ,返回date的月份,范圍1到12。

WEEK(date,first) :返回date的周數(shù),范圍在0到52。first=0,星期從星期天開始,first=1, 從星期一開始。

? ? ? ? ?例子:SELECT WEEK('2017-11-05');//45(11.05是周日,算新的一周)? ? ?

? ? ? ? ? ? ? ? ? ? SELCT WEEK('2017-11-05',1);//44

HOUR(time) ,返回time的小時,范圍是0到23。

MINUTE(time) ,返回time的分鐘,范圍是0到59。

SECOND(time) ,回來time的秒數(shù),范圍是0到59。

8. DAYOFWEEK(date) ,返回日期date的星期索引(1=星期天, ……7=星期六)。

? ? WEEKDAY(date) ,返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

DAYOFMONTH(date) ,返回date的月份中日期,在1到31范圍內(nèi)。

DAYOFYEAR(date) ,返回date在一年中的日數(shù), 在1到366范圍內(nèi)

9.?PERIOD_ADD(P,N) ,增加N個月到階段P(以格式YYMM或YYYYMM),以格式YYYYMM返回值。

? ?PERIOD_DIFF(P1,P2) ,返回在時期P1和P2之間月數(shù),P1和P2應該以格式YYMM或YYYYMM。注意,時期參數(shù)P1和P2不是日期值。

? ? ? ? ? ? ? ? ? ? 例子:SELECT PERIOD_ADD('201711',2);//201801

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SELECT PERIOD_DIFF('201711','201702');//9

10.?to_days函數(shù):返回從0000年(公元1年)至當前日期的總天數(shù)

如果要查詢當前表中昨天的數(shù)據(jù)那么

SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=1;

前天的?那就是

SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=2 AND?TO_DAYS(NOW())-TO_DAYS(createTime)>1;?



轉載自https://www.cnblogs.com/goloving/p/7779040.html

https://blog.csdn.net/sinat_19569023/article/details/50417273

https://www.cnblogs.com/lhj588/p/4245719.html

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容