MySQL日期函数

1. 取得当天

mysql> SELECT curdate();
+------------+
| curdate()  |
+------------+
| 2013-07-29 |
+------------+

2. 取得当前日期

mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2016-05-30 13:58:17 |
+---------------------+
1 row in set

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-05-30 13:58:29 |
+---------------------+
1 row in set

3. 取得当前时间

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 13:54:31  |
+-----------+
1 row in set

4. 取得前一天

mysql> select date_sub(curdate(),interval 1 day);
+------------------------------------+
| date_sub(curdate(),interval 1 day) |
+------------------------------------+
| 2013-07-28                         |
+------------------------------------+

5. 取得下一天

mysql> SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);
+--------------------------------+
| DATE_ADD(NOW(),INTERVAL 1 DAY) |
+--------------------------------+
| 2016-05-31 14:09:16            |
+--------------------------------+
1 row in set

括号中为当天时间的前一天,如果统计前几天就将括号中的’1’改成相应的天数。如果要算月或年,直接将day改为month或year即可

6. 取得前一天的年份

mysql> SELECT YEAR(DATE_SUB(CURDATE(),INTERVAL 1 DAY));
+------------------------------------------+
| YEAR(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) |
+------------------------------------------+
|                                     2013 |
+------------------------------------------+

7. SYSDATE()为:2016-05-30 周一

SELECT WEEK(SYSDATE()); -- 22
SELECT WEEKOFYEAR(SYSDATE()); -- 22
SELECT WEEKDAY(SYSDATE()); -- 0
SELECT DAY(SYSDATE()); -- 30
SELECT MONTH(SYSDATE()); -- 5
SELECT YEAR(SYSDATE()); -- 2016

8. date_sub()函数的例子

今天是2013年5月20日

date_sub('2012-05-25', INTERVAL 1 DAY) -- 表示 2012-05-24
date_sub('2012-05-25', INTERVAL 0 DAY) -- 表示 2012-05-25
date_sub('2012-05-25', INTERVAL - 1 DAY) -- 表示 2012-05-26
date_sub('2012-05-31', INTERVAL - 1 DAY) -- 表示 2012-06-01
date_sub(curdate(), INTERVAL 1 DAY) -- 表示 2013-05-19
date_sub(curdate(), INTERVAL - 1 DAY) -- 表示 2013-05-21
date_sub(curdate(), INTERVAL 1 MONTH) -- 表示 2013-04-20
date_sub(curdate(), INTERVAL - 1 MONTH) -- 表示 2013-06-20
date_sub(curdate(), INTERVAL 1 YEAR) -- 表示 2012-05-20
date_sub(curdate(), INTERVAL - 1 YEAR) -- 表示 2014-05-20