SQL查询DATEDIFF返回NULL
问题描述:
我正在mySQL DB中写这个查询。表listing
有两列StartDate
& EndDate
。我想返回Duration
,即使用DATEDIFF
这两个日期之间的天数。我的查询是:SQL查询DATEDIFF返回NULL
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
任何帮助将不胜感激。
答
的问题是,DATEDIFF()
预计日期是在格式YYYYMMDD
和StartDate
和EndDate
,我是给列输入端为MMDDYYYY
。我将其更改为YYYYMMDD
,它工作。因此,以YYYYMMDD格式显示日期的下列表达式可以很好地工作。
SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing;
答
两个参数是正确的。如果你得到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
+0
嘿布拉德,问题是我给的日期的格式。它应该是YYYYMMDD,我给MMDDYYYY。我改变了它,它工作。 – brokenfoot 2013-03-10 08:24:28
如果startdate和enddate是两个值,那么这两个值是什么? – 2013-03-09 01:09:22
这些列的数据类型是什么? – 2013-03-09 01:11:35