3

我正在 mySQL DB 中编写此查询。该表listing有两列StartDate& EndDate。我想使用Durationie 返回这两个日期之间的天数DATEDIFF。我的查询是:

SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing;

该表在 Duration 列中返回 NULL。

如果我写,

SELECT DATEDIFF(day, StartDate, EndDate) as 'Duration' FROM listing;

返回

Error Code: 1582. Incorrect parameter count in the call to native function 'datediff'   0.000 sec

任何帮助将不胜感激。

4

2 回答 2

4

问题是DATEDIFF()期望日期的格式YYYYMMDD和列输入,StartDateEndDate我给出的是MMDDYYYY. 我将其更改为YYYYMMDD并且有效。因此,以下带有 YYYYMMDD 格式日期的表达式可以正常工作。

SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing;
于 2013-03-10T08:22:33.097 回答
0

两个参数是正确的。如果您得到 NULL,可能是因为这些列中的值不是日期或日期时间类型。

来自 MySql 文档:

DATEDIFF(expr1,expr2)
DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
    -> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
    -> -31
于 2013-03-09T01:12:00.713 回答