如何获取mysql上两个日期之间的差异天数?
答
怎么样的DATEDIFF功能?
引述手册的页面:
DATEDIFF()返回表达式1 - 表达式2 表示为从一个 日至其它在天的值。 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
。
答
请注意,如果你想计数丰满24天在2个日期之间,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');
返回0 -
select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
返回1 -
select timestampdiff(DAY, '2016-04-13 11:00:00', now());
返回自2016年4月13日11:00有多少全日24小时已经过去了:00直到现在。
希望它能帮助某人,因为一开始并不是那么明显,为什么datediff返回的值似乎是意外或错误的。
是的,当我提出问题时,我忘记了日期格式; p 谢谢 – Audel 2010-03-22 08:18:41
P.S. YYYY-MM-DD是ISO 8601标准,所以每个人都应该使用它。非常实用。 – 2016-10-18 12:55:40
**注意**:第一个参数必须大于'datediff()'方法的第二个参数,否则它将返回负值。 – Shashanth 2017-06-30 08:41:08