2011-11-09 12 views
0

私は正常に動作このクエリがあります。SQL奇妙な変換

:私はにクエリを変更した場合

27/6/2011 19:12:28 
11/7/2011 19:18:54 
10/7/2011 11:49:35 
3/7/2011 17:41:53 

を:

SELECT 
Value 
    FROM data 
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6' 

返します

エラーが発生しました。charデータ型をdatetimeデータ型に変換すると、範囲外のdatetime値が返されました。

役立つ情報:

1)値の列はVARCHAR型です。

2)MetaDataIdを指定するときは、結果が「日付」であることを確認します。私はWHERE IsDate(Value)= 1も使用しました。また、すべての結果が日付であったかどうかを確認するためにselectにISDATe(Value)を使用しました...

I don 'なぜこれが激怒しているのか知られていない...誰かが手がかりを持っている?

+1

サーバーとクライアントの両方が同じローカライゼーションになっていますか?つまり、SQLサーバーは実行中ですか。英語は27か月の数字として解析されますか? – Rup

+0

はい同じ場所と月が数字 – ShadowG

+0

として解析される理由これは、*このような任意のデータストレージをサポートする場合、すべてをvarcharsに/から変換するのではなく、適切な型の列をインクルードします通常は適切なキーとチェックが含まれているので、メタデータが日付である場合は、日付列のみが入力されます) –

答えて

3

データ型をdatetimeに明示的に変換する必要があります。

SELECT 
VALUE, 
MONTH(Convert(DateTime, Value,103)) as [Month] 
    FROM data 
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6' 
+0

はうまくいきます!ありがとうございました – ShadowG

+0

'dd/mm/yy'フォーマットが' CAST'によって処理されないという問題を認識しませんでした。nice –