2016-09-30 15 views
1

私はmysqlのために新しいです、既に時間フィールドに値があります、クエリを使用して時間フィールドで余分な5分を更新したいと思います。私はとても多くのことを試みましたが、動かなかったのです。ここでクエリを使用してmysqlに余分な時間を追加する方法

私のクエリ:クエリの作業上

UPDATE STUDENT SET START_TIME = ADDTIME(START_TIME, 500) WHERE ID = 1; 

が、1つの問題は、私のフィールドは、午前23時55分○○秒を持っている場合つまり、そこにあります。 クエリ00:00:00を実行した後に結果が必要ですが、24:00:00を更新します。

誰でも手伝ってください!

ありがとうございます!

+0

'START_TIME'列がどのようなタイプですか? –

+0

@TimBiegeleisen時間のタイプ – Abdul

答えて

0

これはちょっと時間がかかり、24時間後に0に折り返してほしいからです。私のアプローチは、START_DATEから秒数を抽出し、5分を加算し、24時間でmodを取って、1日分の秒を超えた場合に0にラップします。以下のデモで

UPDATE STUDENT 
SET START_TIME = CAST(STR_TO_DATE(CAST(MOD((TIME_TO_SEC(START_TIME) + 300), 86400) AS CHAR(5)), '%s') AS TIME) 
WHERE ID = 1 

、あなたは正しく00:00:00になるために追加5分で23:55:00を変換し、アクション内のロジックを見ることができます。

SQLFiddle

しかし、あなたのケースで最も簡単な解決策はただDATETIMEを使用して、日付コンポーネントを無視するかもしれません。その後、自動的に新しい日にラップする必要があります。

+0

それは完全に機能していない – Abdul

+0

'それは完全に働いていない' ...これは私を助けてくれません –

0

select addtime('23:55:00 '、'00:06:00');

出力 - 24:01:00(時刻データ型だけ時間を表すため、理想的には、権利である、それは午前0時01分00秒に変換するならば、時間成分が間違っている24時間を失う)

選択でaddTime( '2016-09-01 23:55:00'、'00:06:00 ');

出力 - 2016年9月2日午後12時01分00秒(時間成分は午後12時01分00秒として表現されるので、この場合には、24時間の日付に追加される)

要件は、としてそれを取得する場合00:01:00次に回避策があります -

選択時間((ADDTIME(TIME('23:59:59 ')、TIME('02:00:00')))%(TIME( ' 24:00:00 ')));

参照 -

ADDTIME() return 24 hour time

関連する問題