Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menghitung Perbedaan Antara Dua Tanggal di T-SQL

Masalah:

Anda memiliki dua kolom dengan tipe tanggal dan Anda ingin menghitung perbedaan di antara keduanya.

Contoh:

Dalam travel tabel, ada tiga kolom:id , departure , dan arrival . Anda ingin menghitung selisih antara arrival dan departure , atau jumlah hari dari arrival untuk berangkat secara inklusif.

travel tabel terlihat seperti ini:

id keberangkatan kedatangan
1 25-03-2018 05-04-2018
2 12-09-2019 23-09-2019
3 14-07-2018 14-07-2018
4 05-01-2018 08-01-2018

Solusi:

SELECT
  id,
  departure,
  arrival,
  DATEDIFF(day, departure, arrival) AS date_difference,
  DATEDIFF(day, departure, arrival) + 1 AS days_inclusive
FROM travel;

Hasilnya adalah:

id keberangkatan kedatangan date_difference hari
1 25-03-2018 05-04-2018 11 12
2 12-09-2019 23-09-2019 11 12
3 14-07-2018 14-07-2018 0 1
4 05-01-2018 08-01-2018 3 4

Diskusi:

Untuk menemukan perbedaan antar tanggal, gunakan DATEDIFF(datepart, startdate, enddate) fungsi. datepart argumen mendefinisikan bagian dari tanggal/datetime di mana Anda ingin mengungkapkan perbedaannya. Nilainya bisa year , quarter , month , day , minute , dll. Dalam contoh ini, Anda ingin menyatakan perbedaan dalam hari, jadi argumen pertama adalah hari. Dua argumen lainnya adalah tanggal saat Anda mulai menghitung dan tanggal saat Anda berhenti menghitung – Dalam hal ini, departure dan arrival , masing-masing.

Dalam kebanyakan kasus, yang Anda inginkan adalah jumlah hari dari kencan pertama hingga kencan kedua termasuk . Maka Anda perlu menambahkan 1 hari ke selisih hari:DATEDIFF(day, departure, arrival) + 1 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ambang Gabung Adaptif

  2. Menghubungkan ke Teradata di IRI Workbench

  3. Kunci SQL, Unik dan Utama

  4. Bagaimana cara mengambil satu set karakter menggunakan SUBSTRING dalam SQL?

  5. Cara Memesan Secara Abjad dalam SQL