2016-04-25 20 views
0

を合計し、私は私のテーブル内の3つの列を持っている:この単純なMySQL構文で何が問題になっていますか?残りのうち、日付

start - 日時、通常0000-00-07 00:00:00(1週間)- タイムスタンプ、デフォルト値はCURRENT_TIMESTAMP

durationです

end - タイムスタンプ、デフォルト値は0000-00-00 00:00:00

です

は、ここで私は何をすべきかです:

UPDATE `banners` SET `end` = `start` + `duration` WHERE `id` = 93 

エラーが表示されない、idが正確である - しかし、操作が実行されない、endフィールドがちょうどゼロのままです。

どういうところが間違っていますか?任意の引用符、かっこは必要ですか?私も中間のフィールドをタイムスタンプタイプにしてみましたが、結果はありません。

+0

日時を表す整数をminuテス、秒、またはあなたのアプリケーションに合ったものを選択してください。 –

答えて

0

期間は通常1週間である場合、あなたはあなたがDATETIME値にあなたが数字を追加するのと同じ方法を追加することはできません

0

を助けたMySql

DATE_ADD(start,INTERVAL 7 DAY) 

希望のDATE_ADD()機能を使用することができます。 April 25, 2016の意味はJanuary 5, 2016に追加されましたか?

durationは、整数として表すために使用できる最小の時間単位を使用して保存し、追加の代わりにMySQL DATE_ADD()関数を使用する必要があります。 durationがある場合

例えば、1 WEEKは、次のいずれかを使用して:

UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 1 WEEK) WHERE `id` = 93 

UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 7 DAY) WHERE `id` = 93 

UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 168 HOUR) WHERE `id` = 93 
+0

DATETIMEの値を変換した後に追加することができます。その後、それらを変換する必要があります。 – Barry

+0

@ Barryを何に変換するのですか? – axiac

+0

秒に変換すると、http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp – Barry

1

...コードの面で少しだけ醜い、非常に可能性が

UPDATE `banners` 
SET `end` = FROM_UNIXTIME(UNIX_TIMESTAMP(`start`) + (UNIX_TIMESTAMP(`duration`) - UNIX_TIMESTAMP('1970-01-01 00:00:00')),'%Y-%d-%m %h:%i') 
WHERE `id` = 93 

...あなたをすべてを秒に変換し、2番目のものから継続時間を追加してから、設定のためのdatetime文字列に変換する必要があります:)

関連する問題