SQL SERVER: Ermittelt die Gesamtzahl der Tage zwischen zwei Daten


146

Ich versuche, die Gesamtzahl der Tage zwischen zwei Tagen zu ermitteln:

1/1/2011
3/1/2011

RETURN
62

Ist das in SQL Server möglich?


2
Die Anzahl der Tage zwischen 1/1 und 3/1 würde in unserem aktuellen Kalender niemals 62 zurückgeben. Es würde entweder 58 oder 59 zurückgeben. Selbst wenn Sie den Starttag und den
Endtag angeben

7
Und wenn Sie nicht in den USA sind, wird es 2 Tage zurückgeben.
MGOwen

Antworten:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') wird dir geben, wonach du suchst.

Dies gibt an, wie oft die Mitternachtsgrenze zwischen den beiden Daten überschritten wird. Möglicherweise müssen Sie eines hinzufügen, wenn Sie beide Daten in die Zählung einbeziehen - oder eines subtrahieren, wenn Sie keines der beiden Daten einbeziehen möchten.


Es läuft auch datetime und datetime2 wie ein Zauber ab, wie ich in meinen Ergebnissen sehen kann.
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

Sie können diesen MSDN-Link ausprobieren

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

16

Siehe DateDiff :

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

12

Ein anderes Datumsformat

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

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

0

Das funktioniert bei mir -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-1

Wenn Sie dasselbe tun möchten, müssen Sie den folgenden Code anwenden.

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

Dabei ist @fromdate und @todate der Parameter des 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
Können Sie bitte Ihre Antwort erklären? Nur-Code-Antworten sind oft schwer zu interpretieren.
Jordan Kasper
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.