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?

Pod Mays
sumber
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.

Will A
sumber
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);
Khepri
sumber
17

Anda dapat mencoba tautan MSDN ini

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

Lihat DateDiff :

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

Format tanggal lain

select datediff(day,'20110101','20110301')
cakiran
sumber
4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
VMAtm
sumber
0

Ini bekerja untuk saya -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount
bulbul bd
sumber
-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

Bha15
sumber
-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*/
JIYAUL MUSTAPHA
sumber
2
Bisakah Anda jelaskan jawaban Anda? Jawaban khusus kode seringkali sulit ditafsirkan.
Jordan Kasper