excelからdbにデータをインポートしようとしていますが、Excelファイルから日付を入手できないときに00/00/0000
からdatetime
のような特定の既定値を設定する必要があります。SQL Server 2008のDatetimeの問題
getdate()
は現在の日付を設定しますが、特定の日付に設定したい場合は、このようなことを達成できますか?
excelからdbにデータをインポートしようとしていますが、Excelファイルから日付を入手できないときに00/00/0000
からdatetime
のような特定の既定値を設定する必要があります。SQL Server 2008のDatetimeの問題
getdate()
は現在の日付を設定しますが、特定の日付に設定したい場合は、このようなことを達成できますか?
は確か手順よりも、あなたが遅くなります - しかし、注意してください:DATETIME
は1/1/1753
から12/31/9999
まで有効範囲を持っている - そうにそれを設定します0/0/0000
は有効なDATETIME
となります!ちょうどあなたDATETIME/DATETIME2/DATE
します
か(範囲は1/1/0001
から12/31/9999
経由で)SQL Server 2008でいずれかDATETIME2
を使用する - - - または(DATETIME2
と同じ範囲の任意の時間なし)DATE
を使用しますが、このような値が必要な場合は
列がヌル可能で、日付が存在しない場合はNULL
を挿入します。これが最もクリーンな解決策になります。
インポートがどのように実行されているかはわかりませんが、値がNULLであるかどうかをチェックして定義済みの値に設定する場合は、SQL IsNull(a,b)
を使用します。ここで、aはチェックする値、b戻り値です。
insert into [dbo].[tblSomeTable]
set [someField] = IsNull(@thisValueMayBeNull, thisValueIfNull)
おそらく良い例ではありませんが、正しい方向を指す必要があります。
データがインポートされたら、NULL
のすべての日付を固定値で置き換える更新スクリプトを実行できます。
または、データベースの日付フィールドをNOT NULL
に設定し、それにデフォルト値を設定することができます。
bcpまたはBULK INSERTまたはSQLBulkCopyを使用する場合、NULLを保持するオプションがあります。 そうしないと、列のデフォルト値が取得されます。あなたは(たとえば、あなたが空の文字列でないNULLを取得しているため)ことができない場合
その後、NULLID、ISNULLとの組み合わせでそれからデータをロードし、その後、あなたが最初のaaステージング表を使用することができますMSDN
に"Keeping Nulls or Using Default Values During Bulk Import"を参照してください。場合。またはトリガを使用していますが、これはより多くのように2に負荷を行うことは、デフォルト値を設定することができ
おそらくはい。どのようにインポートを行っているのか、より具体的にすることはできますか? – Diego
そのa csvインポート –
そのフィールドが空であるかどうかチェックしたい場合は、そのフィールドを特定の日付に設定します –