2017-06-30 11 views
0

私はTVFに次の行があります。 ので、それは次のようなエラーが発生し、それはまだ動作しない非効率的な、これは一種のようだという事実を除いてSQLのDateTimeまたは文字列

CASE WHEN MIN(ISNULL(EersteStart,GETDATE())) = GETDATE() 
then 'InOverleg' 
else MIN(ISNULL(EersteStart,GETDATE())) end as EersteStartDatum 

を:

Conversion failed when converting date and/or time from character string. 

エラーを理解していますが、必要な機能を提供するためにクエリを調整するにはどうすればよいですか? (各文字列のすべてのEersteStartDatumフィールドに対して、基になるクエリがnullを返す場合は、文字列を返す 'InOverleg'を返し、EersteStartDatumがNULLでない行がある場合はMINの日付を表示します)。

+1

唯一の方法は、日付を文字列として返すことです – Jens

+1

[DBMS](https://en.wikipedia.org/wiki/DBMS)はどちらを使用していますか? –

+0

@a_horse_with_no_nam ImはSQLサーバーを使用しています – Kai

答えて

2

紛らわしいものは何ですか? caseは式であり、1つの型を返す必要があります。 SQL Serverは、より限定的な型に変換する傾向があります。このcaseでは、より制限的な時間はdatetimeです。 'InOverLeg'は変換されません。

あなたは日付を文字列に変換することができます:

(CASE WHEN MIN(COALESCE(EersteStart, GETDATE())) = GETDATE() 
     THEN 'InOverleg' 
     ELSE CONVERT(VARCHAR(10), MIN(COALESCE(EersteStart, GETDATE())), 121) -- or whatever format you like 
END) as EersteStartDatum 
0

使用CAST(data_to_return AS varchar(my_desired_string_length))は、すべての戻りデータのために(そして、その結果、他の結果)。どんな場合でも文字列が返されるようになりました。

関連する問題