2017-01-19 1 views
2

上の表に日付フォーマットにnvarchar型で日付を変換するには、私がやっていることです:SQL Serverのここ

select top 1000 convert(nvarchar(50), cast([date written] as datetime), 1) 
from practicetable 
where convert(nvarchar(50), cast([date written] as datetime), 1) = '09/07/16' 

このクエリは、私が1000以上を記録し選択しようとする小規模いつでも上で動作しますが、クエリが失敗し、このエラーが発生します。

Conversion failed when converting datetime from character string

なぜ1,000を超えるレコードを選択できないのですか?

答えて

2

日付を文字列で保存すると常に危険です。あなたは2008年にTry_Convert()を持っていないので、私はあなた

select distinct [date written] from practicetable order by 1 

は、日付が正しくフォーマットされていないかを確認し、必要に応じてスクラブすることをお勧めします

+0

なぜ私はそれを使用しないとデータ型を持っているのですか?私はほとんどのユーザーが日付を格納するためにvarcharを使用する理由を知らない – Sami

+0

@Sam私は知っている、それは私の心を壊すこのようなデータベースを継承しています...そしてはるかに悪いです。 :) –

+0

ありがとうございます。私は壊れたデータを見つけました! – tnbumbray

0

それがしようとしているため、クエリが失敗しています文字列を日付に変換しますが、文字列は日付形式に適合しません。言い換えれば、 'datetimeを文字列から変換するときに変換に失敗しました'。基礎となるデータを詳しく見て、問題の原因となっているレコードを特定する必要があります。

関連する問題