select subdate(curdate(),date_format(curdate(),'%w') - 1)//擷取目前日期在本周的周一
select subdate(curdate(),date_format(curdate(),'%w') - 7)//擷取目前日期在本周的周日
這兩句語句是mysql用來取目前日期的周一或周日的一個方法,那麼這句如何運作的呢?
%w是以數字的形式來表示周中的天數(0=Sunday,1=Monday,...,6=Saturday),0為周日,6為周六,跟我們一般的認知,一周是從周一開始的并不一樣。
date_format是一個日期轉換函數
date_format(curdate(),'%w') 表示目前日期到上周周日共有幾天的間隔,即目前日期減去上周周日的日期=天數(例:curdate()為2011-01-11,那麼上周周日為 2011-01-09,兩者相減為2)是以若單獨輸出這一句:selectdate_format(curdate(),'%w')結果就是2
在mysqlapi裡對于subdate函數是這樣解釋的:
SELECTSUBDATE(NOW(),1)AS'Yesterday',
SUBDATE(NOW(),INTERVAL-1DAY)AS'Tomorrow';
正值為昨天,負值為明天,目前時間的起點,就是目前時間的上周周日
subdate函數就是用目前時間減去2天,得到上周周日的時間為2011-01-09
那麼如果運作selectsubdate(curdate(),date_format(curdate(),'%w')-2)這句,就表示用目前時間-(2-2),即-0,得到的結果就是目前日期本身了。
如果把%w換成%d呢
%d是用兩位數字來表示月中的天數(00,01,...,31)
直接輸出的結果就應該是11,表示目前日期在一個月内是第幾天
selectdate_format('2011-01-11','%d')
放到開始的語句裡就表示用目前時間減去11,結果為2010-12-31
selectsubdate('2011-01-11',date_format('2011-01-11','%d'))
<a href="http://blog.csdn.net/konglongaa/article/details/51692630" target="_blank">mysql 資料庫中根據目前系統時間,取前後幾秒 幾分鐘 幾小時 幾天</a>
取目前時間:
select current_timestamp;
輸出:2016-06-16 16:12:52
select now();
取目前時間的前一分鐘:
select SUBDATE(now(),interval 60 second);
輸出:2016-06-16 16:11:52
取目前時間的下一分鐘:
select ADDDATE(now(),interval 60 second);
輸出:2016-06-16 16:13:52
通過變化上面的機關。可以取前後 分鐘,小時,天的時間
取前一分鐘的時間:
select SUBDATE(now(),interval 1 minute);
輸出:2016-06-16 16:16:38
取前一小時的時間:
select SUBDATE(now(),interval 1 hour);
輸出:2016-06-16 15:17:38
取前一天的時間:
select SUBDATE(now(),interval 1 day);
輸出:2016-06-15 16:17:38
###########################
取後一分鐘的時間:
select ADDDATE(now(),interval 1 minute);
輸出:2016-06-16 16:17:38
取後一小時的時間:
select ADDDATE(now(),interval 1 hour);
輸出:2016-06-16 17:17:38
取後一天的時間:
select ADDDATE(now(),interval 1 day);
輸出:2016-06-17 16:17:38
本文出自http://www.th7.cn/db/mysql/201606/192064.shtml]
本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1916695,如需轉載請自行聯系原作者