web-dev-qa-db-ja.com

SQLのdatetimeフィールドの2つの日付と時刻の違い

重複の可能性:
SQL Server 2005での2つの日付を比較して時差を見つける方法、日付の操作

2つの日時フィールドがあり、時間フィールドを含めてそれらの間を計算する必要があります。

それらの差が24時間未満の場合は、1日と見なし、24〜48時間を2日と見なす必要があります。

6
sateesh

SQL Serverについて話している場合、 [〜#〜] datediff [〜#〜] が必要です。

何かのようなもの:

SELECT DATEDIFF(d, StartDate, EndDate) FROM tableName

...列名をStartDateとEndDateに置き換え、実際のテーブル名をtableNameに置き換えます。また、月、年などの日付の違いを見つけたい場合などは、「d」文字を他の日付部分に置き換えることができます。

*更新*

@sateesh、これを試してフォローしてください。あなたが抱えている問題は、SQLのDATEDIFF関数の丸めに関係していると思います。これを回避する方法は、日ではなく分など、より詳細なレベルに下げることです。以下のサンプルコードを見て、出力を比較してください:

DECLARE @tblDummy TABLE(Value1 SMALLDATETIME, Value2 SMALLDATETIME, [Description] NVARCHAR(50))
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 01:00', '13 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 11:59', '23 hours 59 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 13:00', '25 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:00', '48 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:01', '48 hours 1 min')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-04 00:00', '60 hours 0 mins')

-- Attempt 1: Standard date diff
SELECT DATEDIFF(d, Value1, Value2) [diff], [Description]
FROM @tblDummy

-- Attempt 2: Date diff taking it down to the minutes level
SELECT CEILING((DATEDIFF(minute, Value1, Value2) / 60.0) / 24.0) [diff], [Description]
FROM @tblDummy

出力は次のとおりです。

image displaying output from query

試み2はあなたが必要とするものをあなたに与えると思います。それでも問題が解決しない場合は、ご質問の内容が理解できません。

9
Steve Kennaird

DATEDIFF関数のように聞こえます。 DatePartを選択できるので、出力をかなり細かくすることができます。

http://msdn.Microsoft.com/en-us/library/ms189794.aspx

差出人: http://www.w3schools.com/sql/func_datediff.asp

SELECT DATEDIFF(day,'2008-06-05 20:10:00','2008-08-05 20:10:00') AS DiffDate

結果:

DiffDate
61
2
NiceYellowEgg