8

INTのタイムスタンプに測定時刻の列があり、1時間間隔のグループデータが必要です。MySQL関数FROM_UNIXTIME()をすでに発見しましたが、この関数の結果から時間を抽出するためのMySQLの内部機器はありますか?

4

5 に答える 5

12

私はあなたが意味すると思いますFROM_UNIXTIME

GROUP BY
    DATE_FORMAT(FROM_UNIXTIME(time_column), '%Y %m %d %H'))
于 2013-03-11T00:18:11.907 に答える
6
SELECT *
FROM table
GROUP BY DATE_FORMAT(FROM_UNIXTIME(time_col_name), '%H')

MySQLの日付ドキュメントを確認してください。

編集:

代わりに使用DATE_FORMATして、返される時間の形式を確実に判別してください。DATE_FORMATのドキュメントを参照してください。:形式%Hは、時間の値を形式00、01、...23で返します。

于 2013-03-11T00:17:24.263 に答える
1

何かのようなもの:

SELECT HOUR(FROM_UNIXTIME(unixCol))
FROM tbl
GROUP BY HOUR(FROM_UNIXTIME(unixCol))

HOURUNIXタイムスタンプが日付に変換されてから1時間を抽出します。

ドキュメントを参照してください

于 2013-03-11T00:17:25.633 に答える
0

そのDBデータを日付として変数に入れてからエコーしてみてください。

$timestamp = strtotime($db_data);
echo date("m-d-Y", $timestamp);
于 2013-03-11T00:21:33.120 に答える
0

これは最初の質問から数年後のことですが、より大きなデータセットを扱っている場合は、クエリセットのすべての行に対して2つの関数を呼び出すため、実行に時間がかかる場合があります。

少しのモジュラー演算を使用して、時間を数秒短縮することができました

GROUP BY FLOOR(time_col/(60*60) MOD 24)

お役に立てれば :)

于 2016-05-09T01:23:39.507 に答える