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ù)在指定修改的時(shí)間段時(shí),也可以指定負(fù)值,負(fù)值代表相減,減去一個(gè)負(fù)值,得到的是對(duì)日期的相加,即返回以后的日期和時(shí)間。
DATE_SUB(d,INTERVAL expr type)函數(shù)中的type必須在上表中。而且,type必須是上表中的某一項(xiàng),不能是其中幾項(xiàng)的組合。因此,使用該函數(shù)時(shí),一定要注意type的選擇。
MySQL interval()函數(shù)
INTERVAL(N,N1,N2,N3,..........)
INTERVAL()函數(shù)進(jìn)行比較列表(N,N1,N2,N3等等)中的N值。該函數(shù)如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。如果N為NULL,它將返回-1。列表值必須是N1<N2<N3的形式才能正常工作。下面的代碼是顯示 INTERVAL()函數(shù)如何工作的一個(gè)簡單的例子:
<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>
請(qǐng)記住,6是從零開始的索引,列表第一個(gè)值的值大于N. 在我們的例子中,7是錯(cuò)誤的值,它是位于第六索引插槽。