Saat ini saya menggunakan varian dateadd/dateiff dengan tanggal nol (0) untuk ini. Tidak diperlukan Pengecoran:
select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)
GETDATE() adalah apapun tanggal waktu Anda.
Ini akan berfungsi untuk tanggal setidaknya hingga tahun 5500 sebelum tanggal gagal karena luapan. Namun jika Anda mencoba menggunakan akurasi kedua, di atas akan langsung gagal.
Menggunakan tanggal tetap lainnya, seperti '01-01-2009', atau Tanggal hari ini (peringatan, SQL yang lebih jelek) akan memperbaikinya. Tanggal yang akan datang juga akan berfungsi. Selama ia memiliki bagian waktu 00:00:00, Anda dapat mendasarkan waktu lain pada waktu tersebut.
contoh:pembulatan ke 30 detik terdekat:
select dateadd(second, round(datediff(second, '2010-01-01', GETDATE()) / 30.0, 0) * 30, '2010-01-01');