2013-03-09 250 views
2

我正在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 

任何幫助將不勝感激。

+0

如果startdate和enddate是兩個值,那麼這兩個值是什麼? – 2013-03-09 01:09:22

+0

這些列的數據類型是什麼? – 2013-03-09 01:11:35

回答

4

的問題是,DATEDIFF()預計日期是在格式YYYYMMDDStartDateEndDate,我是給列輸入端爲MMDDYYYY。我將其更改爲YYYYMMDD,它工作。因此,以YYYYMMDD格式顯示日期的下列表達式可以很好地工作。

SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing; 
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 
+0

嘿布拉德,問題是我給的日期的格式。它應該是YYYYMMDD,我給MMDDYYYY。我改變了它,它工作。 – brokenfoot 2013-03-10 08:24:28