2011-01-30 16 views
11

mysql TIMEフィールド(DATETIMEではなく)に12時間を追加する必要があり、問題が発生します。mysqlは時間フィールドに12時間を追加します

UPDATE `events` 
SET start_time = DATE_ADD(start_time, INTERVAL 12 HOUR) 
WHERE `start_time` < '11:00:00' 

はエラーは発生しませんが、何も変更されません。なぜなら、start_timeはTIMEフィールドなので、私は思っています。

UPDATE `events` 
SET start_time = start_time + '12:00:00' 
WHERE `start_time` < '11:00:00' 

が12秒追加されます。

ありがとう

答えて

29

DATE_ADDの代わりにADDTIMEを使用してください。あなたはSET start_time = ADDTIME(start_time, '12:00:00')

+0

それは働きます!ありがとう、addtimeは新しいものでなければなりません。私のマニュアルにはありません – sdfor

+0

@sdfor:それを聞いてうれしいです。マニュアルに関しては、私はオンラインコンテンツにもっと頼る傾向があります。 mysqlについては、http://dev.mysql.com/doc/ – nybbler

+0

をご利用ください。共有のおかげで:) –

2
set start_time = ADDTIME(start_time,'12:00:00') 

DATE_ADDは、タイムスタンプなどで正常に動作しませんではなく、時間とともに

6
UPDATE `events` 
SET start_time = start_time + INTERVAL 12 HOUR 
WHERE `start_time` < '11:00:00' 

INTERVAL引数がほとんど不要な受け入れのMySQL関数可能性があり、 +-で間隔を加算したり減算したりすることができます。

+0

このクエリは動作するはずですが、MySQL 5.7.11以降でも動作します。おそらく、あなたのポイントリリースのタイプミスやバグでしょうか? –

+1

あなたは正しいAaron、SELECT now()+ INTERVAL 12 HOUR;は働いている。たぶん、私のDB接続などで何か問題があったことがある最後の時。私はちょうど5.6と5.5でテストしました。私は、将来の訪問者を混乱させないように私の最初のコメントを削除しました。 – efreed

1

開発者がデータを更新したくない場合に、時間や分を追加したい場合。次のようにして実行できます。

開発者は、add hours to time column in MySQLにAddTime()関数を使用できます。 仕方以下のように使用することができます。

AddTime(COLUMN,’01:00:00′) to add an hour in MySQL time column 
AddTime(COLUMN,’00:01:00′) to add a minute in MySQL time column 

SQLクエリの例:

select id,name,AddTime(login_time,'01:00:00') as login_time FROM `table` 
関連する問題