0

SQL Server 2012 に列があります。列には日付が varchar に格納されています。日付データは次のようになります: dd/mm/yyyy

ただし、落とし穴があります。列内のデータは変換を拒否しています。詳細を調査すると、日付モードに変換できるものとそうでないものがあることがわかります (日付がテキスト モードとして保存されている可能性があります)。データを日付形式でアップロードしようとしました。しかし、それも拒否している。

サンプルデータ:

Original    Validation Check
10/03/1974  3/10/1974
02/02/1990  2/2/1990
16/05/1988  NULL

私は何をすべきか?

PS: その列に保存されている一部のデータが日付形式ではないことが判明したため、変換を拒否していました。@Digvijay Verma 氏のおかげで、彼はそれを正しく予測し、彼の助けを借りてエラーを特定しました。これらのエラーを削除し、それらを有効な日付に置き換えるだけでうまくいきます。

よろしく、サダト

4

4 に答える 4

2

あなたのコメントによると、列にある文字列形式 ( dd/mm/yyyy)について確信があるので、問題は先頭/末尾のスペースが原因である可能性があると思われます。

Ltrim()Rtrim()およびIsdate()関数でこれを試してください。任意の日付を取得した場合01/01/1900(この日付がフィールドにない場合)、convertedDate フィールドでは、スペースよりも多くの問題が発生しています。

Select Original,
       Case when IsDate(Ltrim(Rtrim(Original))) = 1
            then Convert(date, Ltrim(Rtrim(Original)), 103)
            else Convert(date, '19000101', 112) --date in yyyymmdd format
       End ConvertedDate,
From yourTable
于 2013-10-31T12:09:10.557 に答える
1

日付が dd/mm/yyyy 形式の場合は、試してください

set dateformat dmy
select try_convert(datetime,date_col) from table

他のすべての形式は NULL として表示されます

于 2013-10-31T11:12:18.887 に答える