Pembaruan:Menurut saya https://stackoverflow.com/a/21330407/480943 adalah jawaban yang lebih baik.
Anda dapat melakukannya dengan beberapa aritmatika tanggal:
SELECT some_columns,
DATE_ADD(
DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00"),
INTERVAL IF(MINUTE(the_date) < 30, 0, 1) HOUR
) AS the_rounded_date
FROM your_table
Penjelasan:
-
FORMAT_TANGGAL :
DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00")
mengembalikan tanggal yang terpotong ke jam terdekat (menetapkan bagian menit dan detik ke nol). -
MINUTE :
MINUTE(the_date)
mendapatkan nilai menit dari tanggal tersebut. -
JIKA :Ini bersyarat; jika nilai dalam parameter 1 benar, maka ia mengembalikan parameter 2, jika tidak mengembalikan parameter 3. Jadi
IF(MINUTE(the_date) < 30, 0, 1)
berarti "Jika nilai menit kurang dari 30, kembalikan 0, jika tidak, kembalikan 1". Inilah yang akan kita gunakan untuk membulatkan -- ini adalah jumlah jam untuk ditambahkan kembali. -
DATE_ADD :Ini menambahkan jumlah jam untuk putaran ke dalam hasil.