Mysql SQL查询DATEDIFF返回NULL

Mysql SQL查询DATEDIFF返回NULL,mysql,datediff,Mysql,Datediff,我正在mySQL数据库中编写这个查询。列表中的表有两列StartDate和EndDate。我想使用DATEDIFF返回持续时间即这两个日期之间的天数。我的问题是: SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing; 该表在Duration列中返回NULL 如果我写 SELECT DATEDIFF(day, StartDate, EndDate) as 'Duration' FROM listing; 返回 Error

我正在mySQL数据库中编写这个查询。列表
中的表有两列
StartDate
EndDate
。我想使用
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

任何帮助都将不胜感激。

两个参数是正确的。如果设置为NULL,可能是因为这些列中的值不是date或datetime类型

从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

问题是
DATEDIFF()
希望日期的格式为
YYYYMMDD
,而我给出的
StartDate
EndDate
的列输入是
MMDDYYYY
。我把它改成了
YYYYMMDD
,它成功了。因此,以下日期为YYYYMMDD格式的表达式工作正常

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

startdate和enddate的两个值是什么?这些列的数据类型是什么?嘿,Brad,问题在于我给出的日期格式。应该是YYYYMMDD,我给了MMDDYYYY。我改变了它,它成功了。