2017-08-01 7 views
0

日付フィールドがdate1date2の2つの列があります。 date2フィールドには空白の値がありますが、計算するにはdatediff(day,date1,date2)が必要です。 date1date2どちらも、あなたがしているので、私の要件はdate2sqlserverで1つの列に空白の値がある場合、2列の日付がある

+0

'date2 is not null'?たぶんあなたはsqlに関する本を手に入れて読むべきです。 – Will

+0

例を追加してください。 – M84

+0

'date2'が' null'のときの結果は何でしょうか?あなたはそれを完全に無視するか、何か他のものを戻したいですか? – Siyual

答えて

1

に空白値を無視してのみdate1date2で対応する値のためdatediffを計算することである(date2フィールドに空白値を含む)のエントリ

の等しいノーを持っていますあなたがすべき

Select DateDiff(Day, Convert(DateTime, Date1), Convert(DateTime, Date2)) 
From  YourTable 
Where  Date2 <> '' 
And  Date2 Is Not Null 

:(コメントで述べたように)VARCHARとして値を格納するには、次を使用することができますしかし、実際にはDATEまたはDATETIMEの値を適切なデータ型として格納していても問題ありません。


は、データが SQL Server 2012で、日付に変換しようとしていることを確認するために、以降、追加 Where句を追加することができます。

Where  Try_Convert(DateTime, Date1) Is Not Null 
And  Try_Convert(DateTime, Date2) Is Not Null 

しかしSQL Server 2008のために、あなたはISDATE()を使用することができます(ただし、それは不正確であることで有名です)。

Where  IsDate(Date1) = 1 
And  IsDate(Date2) = 1 

また、それはあなたが(例えばDD/MM/YYYYなどMM/DD/YYYYYYYY-MM-DD、対を)期待しているもの以外のものであればDateFormatを設定する必要があるかもしれません。それ以外

Set DateFormat MDY -- Or whatever your date format is in the field. 

...ちょうどあなたのデータを見て、それが変換していない理由を参照してください。

+0

「文字列から日付や時刻を変換すると変換に失敗しました」というエラーが表示されます。 –

+1

@PrasanthGこれは、日付を文字列として保存しない理由の1つです。どのバージョンのSQL Serverを使用していますか? – Siyual

+0

SQL server 2008. –

関連する問題