我正在尝试使用ANSI SQL标准计算两个日期之间的天数。但是我错过了一些东西,因为这个语句在MySQL中返回NULL。
SELECT EXTRACT(DAY FROM DATE('2009-01-25') - DATE('2009-01-01')) AS day_diff;
我知道MySQL DATEDIFF函数,但我很好奇为什么这段代码无效。
我错过了什么?
答案 0 :(得分:2)
这是你的意思吗?
mysql> SELECT EXTRACT(DAY FROM DATE('2009-01-25')) -
EXTRACT(DAY FROM DATE('2009-01-01')) AS day_diff;
+----------+
| day_diff |
+----------+
| 24 |
+----------+
1 row in set (0.00 sec)
更新:
如果您希望这适用于不同月份(甚至不同年份)的日期,则可以使用MySQL DATEDIFF()
功能。
示例:
mysql> select datediff('2009-04-25','2009-01-01');
+-------------------------------------+
| datediff('2009-04-25','2009-01-01') |
+-------------------------------------+
| 114 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> select datediff('2010-04-25','2009-01-01');
+-------------------------------------+
| datediff('2010-04-25','2009-01-01') |
+-------------------------------------+
| 479 |
+-------------------------------------+
1 row in set (0.00 sec)