私は2つのdatetime値の違いを得るのに苦労します。例えば2つの日付時刻の値の違いを取得するにはどうすればよいですか?
:
col1 col2
---------- ----------
11-04-2011 22-05-2033
12-05-2010 24-06-2045
と、結果セットは、このようなものでなければなりません:すべての
11-01-2022
12-01-2035
おかげで、
Shashra
私は2つのdatetime値の違いを得るのに苦労します。例えば2つの日付時刻の値の違いを取得するにはどうすればよいですか?
:
col1 col2
---------- ----------
11-04-2011 22-05-2033
12-05-2010 24-06-2045
と、結果セットは、このようなものでなければなりません:すべての
11-01-2022
12-01-2035
おかげで、
Shashra
おそらくあなたのクライアントがについて混乱しています日付との差(特に年、月および日)および期間(量年、月、日)を使用します。ある日付を別の日付から引くと、後者は前者ではなくなります。
このような混乱は、しばしば信じられているよりも一般的です。
さて、あなたは本当に一つの解決策があることに行いたい場合:
各行を個別にフェッチするには、cursorを使用する必要があります。
DATEDIFF
を使用すると、2つの日付の間の日数がわかります。
この値の半分。
次に、DATEADD
を使用して、最初の日付の半分を追加します。
declare @d1 datetime
,@d2 datetime
set @d1 = '11/4/2011'
set @d2 = '22/5/2033'
SELECT DATEADD(d, (DATEDIFF(d, @d1, @d2)/2), @d1)
したがって、あなたのクエリで、次のようにします。
SELECT DATEADD(d, (DATEDIFF(d, col1, col2)/2), col1)
FROM [Table]
私はあなたが違いによって何を意味するかのように混乱しています。私にとっては、2033年と2011年の差を見いだすのであれば、回答は0022でなければなりません。2022年ではありません。 – CHawk
もちろんあなたは正しい年は0022でなければなりませんが、もし会社がその年の違いを望むならばどうでしょうか?私はその2年間の違いは22だが、それは21世紀の権利であると言うことを意味する。ですから、世紀と年を得る必要があります(違い)。 – Shahsra
Um、no。違いは何世紀もありません。それは基本的な数学です。 2033年から2011年を差し引いた年は2222年ではなく、2222年です。あなたの質問は全く意味をなさないし、あなたのコメントには説明もありません。 :)私はあなたが戻ってあなたのクライアント/会社に、彼らが誤解しなければならないので、彼らが再び欲しいものを説明してもらう必要があると思います。答えが「2022年」になる可能性がある唯一の方法は、「2011年から2033年までの年数をどのように見つけ、その差を2で割って2011年に加算するか」という質問がある場合です。 –