Answers:
怎么样DATEDIFF功能?
引用手册页面:
DATEDIFF()返回expr1 – expr2,以从一个日期到另一个日期的天数表示。expr1和expr2是日期或日期和时间表达式。在计算中仅使用值的日期部分
就您而言,您将使用:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
但请注意,日期应写为YYYY-MM-DD
,而不是DD-MM-YYYY
您发布的日期。
datediff()
,否则它将返回负值。
请注意,如果您要计算两个日期之间的24小时全天,datediff可能会为您返回错误的值。
如文档所述:
在计算中仅使用值的日期部分。
导致
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
返回1而不是预期的0。
解决方案是使用select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(注意与datediff相比参数的相反顺序)。
一些例子:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
返回0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
返回1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
返回自2016-04-13 11:00:00到现在为止已经过去24小时的整整多少天。希望它将对某人有所帮助,因为起初,datediff为什么返回似乎是意外或错误的值并不太明显。
datediff()
和之间翻转timestampdiff()
。
我更喜欢TIMESTAMPDIFF,因为您可以根据需要轻松更改单位。
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
输出:
id entity_id start_date end_date days
1 1236 2018-01-16 00:00:00 2018-08-31 00:00:00 227
2 2876 2015-06-26 00:00:00 2019-06-30 00:00:00 1465
3 3880 1990-06-05 00:00:00 2018-07-04 00:00:00 10256
4 3882 1993-07-05 00:00:00 2018-07-04 00:00:00 9130
希望对以后的人有帮助