DATETIME
mySQL(fromStamp
)に有効な日付/タイムスタンプのあるフィールドがあります。分を次の6分間隔に切り上げることができる必要があります。秒は無視するか、:00として扱う必要があります
したがって、私のDATETIMEが
:00と:06の間、および:31と:36の間の時間を除いて2013-01-31 13:07:17
、結果を切り捨てる必要がある場合は、それらを切り捨てる必要があります。2013-01-31 13:12:00
:00-06 round DOWN to 00
:07-12 round UP to 12
:13-18 round UP to 18
:19-24 round UP to 24
:24-30 round UP to 30
:31-36 round DOWN to 30
:37-42 round UP to 42
:43-48 round UP to 48
:49-54 round UP to 54
:55-00 round UP to 00
以下を使用して選択的に切り捨てる合理的な方法を見つけました。
SELECT
fromStamp,
CONCAT(DATE_FORMAT(`fromStamp`, '%Y-%m-%d'), ' ',
SEC_TO_TIME((TIME_TO_SEC(`fromStamp`) DIV 360) * 360))
FROM `table`
WHERE (
DATE_FORMAT(`fromStamp`, '%i') BETWEEN 0 AND 6
OR DATE_FORMAT(`fromStamp`, '%i') BETWEEN 31 AND 36
);
他のすべてを次の6分間隔に切り上げる良い方法はありますか?(私は何か単純なものが欠けているような気がします)
アップデート
だから私は@mellamokbの解決策を使っていますが、秒に関する彼のコメントは正しいです、それは効果を発揮します。
2013-01-22 12:24:13のDATETIMEは12:30に切り上げられますが、これは必要なものではないため、最初に次のことを行います。
UPDATE table SET fromStamp = CONCAT(DATE_FORMAT(fromStamp, '%Y-%m-%d %h:%i'), ':00');
秒を取り除くために、それから私が探しているものを正確に取得する彼のクエリ。