Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

T-SQL datetime dibulatkan ke menit terdekat dan jam terdekat dengan menggunakan fungsi

declare @dt datetime

set @dt = '09-22-2007 15:07:38.850'

select dateadd(mi, datediff(mi, 0, @dt), 0)
select dateadd(hour, datediff(hour, 0, @dt), 0)

akan kembali

2007-09-22 15:07:00.000
2007-09-22 15:00:00.000

Di atas hanya memotong detik dan menit, menghasilkan hasil yang diminta dalam pertanyaan. Seperti yang ditunjukkan oleh @OMG Ponies, jika Anda ingin membulatkan ke atas/bawah, maka Anda dapat menambahkan masing-masing setengah menit atau setengah jam, lalu potong:

select dateadd(mi, datediff(mi, 0, dateadd(s, 30, @dt)), 0)
select dateadd(hour, datediff(hour, 0, dateadd(mi, 30, @dt)), 0)

dan Anda akan mendapatkan:

2007-09-22 15:08:00.000
2007-09-22 15:00:00.000

Sebelum tipe data tanggal ditambahkan di SQL Server 2008, saya akan menggunakan metode di atas untuk memotong bagian waktu dari datetime untuk mendapatkan hanya tanggal. Idenya adalah untuk menentukan jumlah hari antara datetime yang dimaksud dan titik waktu tertentu (0 , yang secara implisit dilemparkan ke 1900-01-01 00:00:00.000 ):

declare @days int
set @days = datediff(day, 0, @dt)

lalu tambahkan jumlah hari tersebut ke titik waktu tetap, yang memberi Anda tanggal asli dengan waktu yang disetel ke 00:00:00.000 :

select dateadd(day, @days, 0)

atau lebih ringkasnya:

select dateadd(day, datediff(day, 0, @dt), 0)

Menggunakan bagian tanggal yang berbeda (mis. hour , mi ) akan berfungsi sebagaimana mestinya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Beberapa Nilai di Kursor SQL Server

  2. Apakah mungkin menggunakan SqlGeography dengan Linq to Sql?

  3. SQL Server Internal:Operator Bermasalah Pt. Saya – Memindai

  4. Perbaiki Msg 512 "Subquery mengembalikan lebih dari 1 nilai" di SQL Server

  5. Bagaimana cara mengambil catatan selama 30 menit terakhir di MS SQL?