我在mySQL DB中写这个查询。表格listing
有两列StartDate
& EndDate
。我想使用Duration
返回DATEDIFF
这两天之间的天数。我的疑问是:
SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing;
该表在“持续时间”列中返回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
任何帮助将不胜感激。
答案 0 :(得分:4)
问题在于,DATEDIFF()
期望日期采用YYYYMMDD
格式,我提供的StartDate
和EndDate
的列输入为{{1} }。我将其更改为MMDDYYYY
并且有效。因此,以YYYYMMDD格式的日期表达式可以正常工作。
YYYYMMDD
答案 1 :(得分: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