SQL SERVER:2つの日付間の合計日数を取得する


146

2日間の合計日数を取得しようとしています。

1/1/2011
3/1/2011

RETURN
62

SQL Serverで実行できますか?


2
1/1から3/1 までの日数は、現在のカレンダーでは62を返しません。それはどちらかあなたが開始日と終了日が含まれている場合でも、それは60または61になり58または59を返します
TylerH

7
アメリカにいない場合は、2日で返品できます。
MGOwen 2018

回答:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') あなたが求めているものをあなたに与えるでしょう。

これは、真夜中の境界が2つの日付の間で交差する回数を示します。カウントに両方の日付を含める場合は、これに1を加える必要がある場合があります。どちらの日付も含めない場合は、1を引く必要があります。


結果で確認できるように、これはdatetimeとdatetime2も魅力的に処理します。
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

このMSDNリンクを試すことができます

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

16

DateDiffを参照してください。

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


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

0

これは私のために働いています-

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-1

同じことをストアプロシージャで実行する場合は、以下のコードを適用する必要があります。

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

ここで、@ fromdateおよび@todateは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
答えを説明していただけますか?コードのみの回答は、解釈が難しい場合があります。
ジョーダンカスパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.