2011-11-14 2 views
2

私は2つのdatetime値の違いを得るのに苦労します。例えば2つの日付時刻の値の違いを取得するにはどうすればよいですか?

col1    col2 
----------   ---------- 
11-04-2011   22-05-2033 
12-05-2010   24-06-2045 

と、結果セットは、このようなものでなければなりません:すべての

11-01-2022 

12-01-2035 

おかげで、

Shashra

+3

私はあなたが違いによって何を意味するかのように混乱しています。私にとっては、2033年と2011年の差を見いだすのであれば、回答は0022でなければなりません。2022年ではありません。 – CHawk

+0

もちろんあなたは正しい年は0022でなければなりませんが、もし会社がその年の違いを望むならばどうでしょうか?私はその2年間の違いは22だが、それは21世紀の権利であると言うことを意味する。ですから、世紀と年を得る必要があります(違い)。 – Shahsra

+0

Um、no。違いは何世紀もありません。それは基本的な数学です。 2033年から2011年を差し引いた年は2222年ではなく、2222年です。あなたの質問は全く意味をなさないし、あなたのコメントには説明もありません。 :)私はあなたが戻ってあなたのクライアント/会社に、彼らが誤解しなければならないので、彼らが再び欲しいものを説明してもらう必要があると思います。答えが「2022年」になる可能性がある唯一の方法は、「2011年から2033年までの年数をどのように見つけ、その差を2で割って2011年に加算するか」という質問がある場合です。 –

答えて

0

おそらくあなたのクライアントがについて混乱しています日付との差(特に年、月および日)および期間(年、月、日)を使用します。ある日付を別の日付から引くと、後者は前者ではなくなります。

このような混乱は、しばしば信じられているよりも一般的です。

0

さて、あなたは本当に一つの解決策があることに行いたい場合:

  1. 異なる変数への各日付の日、月、年の値を取得します。
  2. 各日、月、および年の変数を減算します。
  3. 結果の年の値に2000年を追加します。
  4. 結果の日、月、および年を日付にします。

各行を個別にフェッチするには、cursorを使用する必要があります。

1

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] 
関連する問題