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

Bagaimana saya bisa membandingkan waktu di SQL Server?

Perbandingan Anda akan berfungsi, tetapi akan lambat karena tanggal diubah menjadi string untuk setiap baris. Untuk membandingkan dua bagian waktu secara efisien, coba:

declare @first datetime
set @first = '2009-04-30 19:47:16.123'
declare @second datetime
set @second = '2009-04-10 19:47:16.123'

select (cast(@first as float) - floor(cast(@first as float))) -
       (cast(@second as float) - floor(cast(@second as float)))
       as Difference

Penjelasan panjang:tanggal di SQL server disimpan sebagai angka floating point. Digit sebelum koma menunjukkan tanggal. Digit setelah koma menunjukkan waktu.

Jadi, inilah contoh tanggalnya:

declare @mydate datetime
set @mydate = '2009-04-30 19:47:16.123'

Mari kita ubah menjadi float:

declare @myfloat float
set @myfloat = cast(@mydate as float)
select @myfloat
-- Shows 39931,8244921682

Sekarang ambil bagian setelah karakter koma, yaitu waktu:

set @myfloat = @myfloat - floor(@myfloat) 
select @myfloat
-- Shows 0,824492168212601

Ubah kembali menjadi waktu tanggal:

declare @mytime datetime
set @mytime = convert(datetime,@myfloat)
select @mytime
-- Shows 1900-01-01 19:47:16.123

1900-01-01 hanyalah tanggal "nol"; Anda dapat menampilkan bagian waktu dengan konversi, dengan menentukan misalnya format 108, yang merupakan waktunya:

select convert(varchar(32),@mytime,108)
-- Shows 19:47:16

Konversi antara datetime dan float cukup cepat, karena pada dasarnya disimpan dengan cara yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Hubungan di SQL Server 2017

  2. Cara Mengubah Nilai untuk Edit X Teratas dan Memilih Baris X Teratas di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 20

  3. Tidak ada kunci utama atau kandidat dalam tabel referensi yang cocok dengan daftar kolom referensi di kunci asing

  4. Permintaan pembaruan SQL menggunakan gabungan

  5. Cara yang tepat untuk menerapkan batasan unik yang memungkinkan beberapa nilai NULL di SQL Server