我從Excel導入一些數據到數據庫,問題是我想設置特定的默認值,如00/00/0000
到datetime
列,當Excel文件中沒有可用的日期時。SQL Server 2008中的日期時間問題
getdate()
將日期設置爲當前日期,但我想設置爲特定的日期,是否有可能實現這樣的功能。
我從Excel導入一些數據到數據庫,問題是我想設置特定的默認值,如00/00/0000
到datetime
列,當Excel文件中沒有可用的日期時。SQL Server 2008中的日期時間問題
getdate()
將日期設置爲當前日期,但我想設置爲特定的日期,是否有可能實現這樣的功能。
當然,你可以設置一個默認值 - 但要注意:DATETIME
具有1/1/1753
通過12/31/9999
的有效範圍 - 因此將其設置爲0/0/0000
將不是是有效的DATETIME
價值!
如果你需要這樣的價值 - 在SQL Server 2008中使用任何DATETIME2
(範圍爲1/1/0001
通過12/31/9999
) - 或使用DATE
(沒有任何時間 - 同一範圍內DATETIME2
)
或者:只是讓你DATETIME/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。 如果您不這樣做,那麼您將獲得列的默認值。
見"Keeping Nulls or Using Default Values During Bulk Import" MSDN上
如果你不能(說是因爲你得到空字符串不爲空),那麼你可以先使用AA臨時表,然後從該用NULLID,ISNULL和組合加載數據案件。或使用觸發器,但是這會減慢你的速度更比2做負載階躍
可能是的。你能更具體地說明你是如何進行導入的嗎? – Diego 2012-01-31 10:29:53
它的csv導入 – 2012-01-31 10:32:09
我想檢查該字段是否爲空,如果是,則將該字段設置爲特定日期 – 2012-01-31 10:32:43