mysql取得日期值的一些函数使用示例。
(1)取得当前日期:
mysql> SELECT curdate();
+------------+
| curdate() |
+------------+
| 2017-02-28 |
+------------+
下面的两个时间函数等同于 curtime():
current_time()
current_time
(2)mysql取得当前日期+时间:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-02-28 22:10:40 |
+---------------------+
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:
current_timestamp() current_timestamp
localtime() localtime
localtimestamp() localtimestamp
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。
另外 sysdate() 日期时间函数获取值的格式和 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
(3)取得前一天:
mysql> select date_sub(curdate(),interval 1 day);
+------------------------------------+
| date_sub(curdate(),interval 1 day) |
+------------------------------------+
| 2017-02-28 |
+------------------------------------+
括号中为当天时间的前一天,如果统计前几天就将括号中的’1’改成相应的天数。如果要算月或年,直接将day改为month或year即可。
(4)取得前一天的年份:
mysql> SELECT YEAR(DATE_SUB(CURDATE(),INTERVAL 1 DAY));
+------------------------------------------+
| YEAR(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) |
+------------------------------------------+
| 2017 |
+------------------------------------------+
date_sub()函数的例子:
date_sub('2017-02-25',interval 1 day) 表示 2017-02-24
date_sub('2017-02-25',interval 0 day) 表示 2017-02-25
date_sub('2017-02-25',interval -1 day) 表示 2017-02-26
date_sub('2017-02-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) 表示 2017-02-20
date_sub(curdate(),interval -1 year) 表示 2014-05-20
(5)MySQL 取得日期、时间相减后的差值。
datediff(date1,date2), timediff(time1,time2)
MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。
select datediff('2008-08-08', '2008-08-01'); -- 7
select datediff('2008-08-01', '2008-08-08'); -- -7
MySQL timediff(time1,time2):两个时间相减 time1 - time2,返回 time 差值。
select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08
select timediff('08:08:08', '00:00:00'); -- 08:08:08
注意:timediff(time1,time2) 函数的两个参数类型必须相同。