これを使用して、2 つの日付の差を見つけることができます。
SELECT
convert(VARCHAR, abs(datediff(second, @date1, @date2) / 60 / 60 / 24))
+ ':' +
convert(VARCHAR, abs(((datediff(second, @date1, @date2) / 60) / 60) % 24))
+ ':' +
convert(VARCHAR, abs((datediff(second, @date1, @date2) / 60) % 60))
+ ':' +
convert(VARCHAR, abs((datediff(second, @date1, @date2) % 60)))
@date1
と@date2
を必要な日付に変更するだけです。
これは、これをテストできる SQLFiddle です。
本当に datetime に変換したい場合は、これを使用してください:
SELECT
convert(DATETIME,
(convert(VARCHAR, abs(((datediff(second, @date1, @date2) / 60) / 60) % 24))
+ ':' +
convert(VARCHAR, abs((datediff(second, @date1, @date2) / 60) % 60))
+ ':' +
convert(VARCHAR, abs((datediff(second, @date1, @date2) % 60)))
)
+ dateadd(day,
abs(datediff(second, @date1, @date2) / 60 / 60 / 24),
'01-01-1900 00:00:00')
)
2 番目のクエリのSQLFiddle を次に示します。