3

私はこのクエリをmySQLDBで書いています。テーブルlistingには2つの列StartDateとがありますEndDateDurationを使用して、これら2つの日付の間の日数を返し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

どんな助けでもありがたいです。

4

2 に答える 2

4

問題はDATEDIFF()、日付が の形式であると予想されYYYYMMDD、列の入力が でStartDateありEndDate、私が与えていたのはMMDDYYYY. に変更しましたがYYYYMMDD、うまくいきました。したがって、YYYYMMDD 形式の日付を使用した次の式は問題なく機能します。

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

2つのパラメータが正しいです。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 に答える