SELECT DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL -1 MONTH), '%Y-%m-01 00:00:00') AS '下月初';
SELECT DATE_FORMAT( LAST_DAY(DATE_SUB(CURDATE(), INTERVAL -1 MONTH)), '%Y-%m-%d 23:59:59') AS '下月末';
SELECT DATE_FORMAT( CURDATE(), '%Y-%m-01 00:00:00') AS '本月初';
SELECT DATE_FORMAT( LAST_DAY(CURDATE()), '%Y-%m-%d 23:59:59') AS '本月末';
SELECT DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01 00:00:00') AS '上月初';
SELECT DATE_FORMAT( LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59') AS '上月末';
DATE_SUB(d,INTERVAL expr type)函數(shù)在指定修改的時間段時碳竟,也可以指定負值,負值代表相減狸臣,減去一個負值莹桅,得到的是對日期的相加,即返回以后的日期和時間烛亦。
DATE_SUB(d,INTERVAL expr type)函數(shù)中的type必須在上表中诈泼。而且,type必須是上表中的某一項煤禽,不能是其中幾項的組合铐达。因此,使用該函數(shù)時檬果,一定要注意type的選擇瓮孙。
MySQL interval()函數(shù)
INTERVAL(N,N1,N2,N3,..........)
INTERVAL()函數(shù)進行比較列表(N唐断,N1,N2杭抠,N3等等)中的N值脸甘。該函數(shù)如果N<N1返回0,如果N<N2返回1偏灿,如果N<N3返回2 等等丹诀。如果N為NULL,它將返回-1翁垂。列表值必須是N1<N2<N3的形式才能正常工作铆遭。下面的代碼是顯示 INTERVAL()函數(shù)如何工作的一個簡單的例子:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word;">mysql>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10);
+---------------------------------------------------------+
| INTERVAL(6,1,2,3,4,5,6,7,8,9,10) |
+---------------------------------------------------------+
| 6 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
</pre>
請記住,6是從零開始的索引沮峡,列表第一個值的值大于N. 在我們的例子中疚脐,7是錯誤的值,它是位于第六索引插槽邢疙。