2017-12-19 10 views
0

私は時間と分を表す整数を持つ列を持っています。今、私は時間の列から分を追加/減算したいと思います。 (int型の列と時間列として、ここでCURTIME及び15)は、次の作品が、奇妙に感じている: MySQL:時間列にX分を追加する

SELECT ADDTIME(CURTIME(), CONCAT("00:" , 15, ":00")) AS foo FROM dual; 

は、これはどのように改善することができますか?以下のように

SELECT CURTIME() + INTERVAL 15 MINUTE 

+0

あなたは、あなたのテーブルの値を編集するか、単に時間が更新されますし、元の値を変更せずに? – Cynical

+0

実際には、WHERE句でそれを使用したいと思います...イベントの前後にさらに時間が必要なイベントがあり、この時間の長さはその整数フィールドのDBに格納されます。 –

+1

MWE(https://stackoverflow.com/help/mcve)を提供できる場合は、より具体的な回答を提供することができます – Cynical

答えて

2

あなたはCURTIME()またはCURRENT_TIME()または類似してINTERVALを使用することができ、あなたのCURTIME()フィールドがTIMEあり、そして場合あなたのケースのために

mysql> SELECT CURTIME() + INTERVAL 15 MINUTE; 
+--------------------------------+ 
| CURTIME() + INTERVAL 15 MINUTE | 
+--------------------------------+ 
| 12:23:24      | 
+--------------------------------+ 
1 row in set (0.01 sec) 

mysql> 

、期間は整数です。 、それらはokでスロットするだけでよい:例:

SELECT time_field + INTERVAL my_duration MINUTE 

そうでない場合は、CAST()を使用して追加のためのタイプを取得できます。 他に発現する場合+演算子のいずれかの側に許可され

date + INTERVAL expr unit 
date - INTERVAL expr unit 

INTERVAL exprのユニット :演算子 -

日演算も +又は一緒に間隔を使用して行うことができますsideは日付または日時の値です。 - 演算子の場合、区間 exprユニットは、右側からのみ許可されます。 は、区間から日付または日時の値を減算しないためです。

参考:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

+0

本当にあなたの回答がよろしいですか?今私はMySQL 5.5に悩まされています... 5.5では、結果としてNULLを取得します。すぐにアップグレードする必要があります。ありがとう! –

+0

これは5.5を含む以前のバージョンではうまくいくと思います。もしそれが5.5上で動作していなければ、それは型の問題または同様のものかもしれません。 –

関連する問題