0

このようなテーブル「mytable」があります

ID | dateTime            |     data      | 
------------------------------------------
1  | 2013-09-01 00:15:00 |   some data   |
2  | 2013-09-01 00:15:00 |   some data   |
4  | 2013-09-01 00:15:00 |   some data   |
5  | 2013-09-01 00:30:00 |   some data   |
6  | 2013-09-01 00:30:00 |   some data   |
7  | 2013-09-01 00:30:00 |   some data   |
8  | 2013-09-01 00:45:00 |   some data   |
9  | 2013-09-01 00:45:00 |   some data   |
10 | 2013-09-01 00:45:00 |   some data   |

以前は大丈夫だったのですが、誤って dateTime を 15 分に丸めるように変更してしまいました (5 分で丸めるはずでした) こちらを参照してくださいいいえ、5 分で時間を丸めたいです。

私がこれを行うことができる唯一の方法は、1 つのレコードの dateTime を取得し、次の行のレコードを確認し、両方が同じ場合は 5 分を追加することだと思います。次の行の値を取得して前の行と比較するにはどうすればよいですか?

誰でもこれで私を助けることができますか??

ありがとう

4

1 に答える 1

0

このクエリは、新しい日時の値を出力します。ここでは、日時が前の行と同じになるたびに 5 分を追加し、ID 順に並べ替えます。

SELECT ID, 
    DATE_ADD(dateTime, INTERVAL 5 * (ID - 
        (SELECT MIN(ID) FROM MyTable T2 WHERE T2.dateTime = T1.dateTime)
    ) MINUTE) AS dateTime,
    data
)
FROM MyTable T1

これは、現在の行と同じ dateTime 値の最初の行 (最小 ID) の間の ID 値の差の 5 倍を追加することによって機能します。

これは確実に目的を達成しますが、15 分に切り捨てる方法によっては、元のデータから 5 分に切り捨てた場合と同じ出力が得られるとは限りません。最善の選択肢は、バックアップから復元することです。

于 2013-10-10T11:07:16.930 に答える