2017-06-05 10 views
1

すべてのポインタが高く評価されます!私は構文に何が間違っているのかを知ることはできません。答えは見つからなかったので、私はここに質問を投稿しています。前もって感謝します!MySQL DATE_ADDは日付を0に変換しますか?

は、ここに私が試したものです:

mysql> select DATE_ADD(start_date, INTERVAL 2 week), DATE_ADD(end_date, 
INTERVAL 2 week) from lists where id=1; 
+---------------------------------------+------------------------------ 
-------+ 
| DATE_ADD(start_date, INTERVAL 2 week) | DATE_ADD(end_date, INTERVAL 2 
week) | 
+---------------------------------------+------------------------------ 
-------+ 
| 2017-05-28       | 2017-06-11       
| 
+---------------------------------------+------------------------------ 
-------+ 

結果が正しい見えます。次に、私は試しました:

mysql> update lists set start_date=DATE_ADD(start_date, INTERVAL 2 WEEK) and 
end_date=DATE_ADD(end_date, INTERVAL 2 WEEK) where id=1; 
ERROR 1292 (22007): Incorrect date value: '0' for column 'start_date' at row 
1 

SOに関するいくつかの調査はありましたか?いくつかの回答は厳格なモードを指していますか?しかし、厳密なモードエラーを発生させるためには、計算された日付は最初に0にする必要があり、上記の構文がDATE_ADDにどのようにしてそのようになるかはわかりません。

ただ、テストのために、私はこれを試してみました:

mysql> update ignore lists set start_date=DATE_ADD(start_date, 
INTERVAL 2 week) and end_date=DATE_ADD(end_date, INTERVAL 2 week) where 
id=1; 
Query OK, 1 row affected, 1 warning (0.02 sec) 

それは、このような結果が得られた:

mysql> select start_date, end_date from lists where id=1; 
+------------+------------+ 
| start_date | end_date | 
+------------+------------+ 
| 0000-00-00 | 2017-05-28 | 
+------------+------------+ 

どのように?

もう一度お返事ありがとうございます。

+0

新しいSOユーザーからこの質問をアップする。どうして?それはよく尋ねられるからです。良い質問のすべてが難しい答えを持っているわけではありません。 –

答えて

0

Ooops。カンマが必要な場所はandです。

update lists 
    set start_date=DATE_ADD(start_date, INTERVAL 2 WEEK), 
     end_date=DATE_ADD(end_date, INTERVAL 2 WEEK) 
    where id=1; 

and0又は1のいずれかを返すブール演算子です。だから、MySQLのパーザーはそれに悩まされるのではなく、むしろそれを評価しようとします。したがって、あなたのゼロ。

私はそれが起こると嫌です。

+0

これをキャッチしてくれてありがとう!私は見落とした "と" :) – user5832168

関連する問題