SQL SERVER: Dapatkan total hari antara dua tanggal


146

Saya mencoba mendapatkan jumlah total hari antara dua hari:

1/1/2011
3/1/2011

RETURN
62

Apakah mungkin dilakukan di SQL Server?


2
Jumlah hari antara 1/1 dan 3/1 tidak akan pernah mengembalikan 62 di kalender kami saat ini. Entah akan mengembalikan 58 atau 59. Bahkan jika Anda termasuk hari awal dan akhir, itu akan menjadi 60 atau 61.
TylerH

7
Dan jika Anda tidak di AS, itu akan kembali 2 hari.
MGOwen

Jawaban:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') akan memberi Anda apa yang Anda cari.

Ini memberikan berapa kali batas tengah malam dilintasi antara dua tanggal. Anda mungkin memutuskan untuk perlu menambahkan satu ke ini jika Anda memasukkan kedua tanggal dalam hitungan - atau kurangi satu jika Anda tidak ingin memasukkan kedua tanggal.


Ini juga menghasilkan datetime dan datetime2 seperti pesona seperti yang saya lihat di hasil saya.
Honza P.

39

SQL Server DateDiff

DECLARE @startdate datetime2 = '2007-05-05 12:10:09.3312722';
DECLARE @enddate datetime2 = '2009-05-04 12:10:09.3312722'; 
SELECT DATEDIFF(day, @startdate, @enddate);

17

Anda dapat mencoba tautan MSDN ini

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')

16

Lihat DateDiff :

DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)

12

Format tanggal lain

select datediff(day,'20110101','20110301')

4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');

0

Ini bekerja untuk saya -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount

-1

jika Anda ingin melakukan hal yang sama Prosedur Toko maka Anda perlu menerapkan kode di bawah ini.

select  (datediff(dd,'+CHAR(39)+ convert(varchar(10),@FromDate  ,101)+ 
 CHAR(39)+','+CHAR(39)+ convert(varchar(10),@ToDate  ,101) + CHAR(39) +')) 
 Daysdiff

di mana @fromdate dan @todate adalah Parameter dari SP


-1
DECLARE @FDate DATETIME='05-05-2019' /*This is first date*/
 GETDATE()/*This is Current date*/
SELECT (DATEDIFF(DAY,(@LastDate),GETDATE())) As DifferenceDays/*this query will return no of days between firstdate & Current date*/

2
Bisakah Anda jelaskan jawaban Anda? Jawaban khusus kode seringkali sulit ditafsirkan.
Jordan Kasper
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.