2009-07-29 69 views
4

每當值爲null該查詢轉換SQL Server空日期/時間字段

SELECT ISNULL(someDateTime,'') 
FROM someTable 

結果是

someDateTime 
------------ 
1900-01-01 00:00:00.000 

我希望它是「否」,所以如果我運行這個:

SELECT ISNULL(someDateTime,'No') 
FROM someTable 

然後有這樣的錯誤:

Conversion failed when converting datetime from character string.

如何做到這一點?提前致謝!

+0

你想顯示什麼做,如果日期時間爲不是null? – shahkalpesh 2009-07-29 16:42:52

+0

你的意思是SQL Server或MySQL嗎? – 2009-07-29 17:52:44

回答

6

表達式的結果將需要是單一類型。如果你想要一個字符串(和你做,因爲「不」是不是一個DateTime),你需要的日期時間轉換爲這樣的字符串:

SELECT ISNULL(cast(someDatetime as varchar(20)), 'No') FROM someTable 

正如其他人所建議的,不過,這樣的代碼這聽起來很糟糕,你可能想要將null傳遞給客戶端組件並在那裏進行轉換。

3

isnull()正嘗試將第二個參數轉換爲您在第一個參數中指定的字段的數據類型。

如果你將要回到你需要將DateTime場轉換爲字符串類型,以便isnull()可以正常工作的字符串 - 見Michael Petrotta's答案一種方式來做到這一點。

0

您仍在選擇DateTime列,因此該表達式的結果仍然需要是DateTime值而不是字符串。爲了提出適當的解決方法,我們需要更多地瞭解您真正想要處理的數據。

0

你不能直接這樣。在客戶端捕獲NULL並將其更改爲「否」更容易。

但是,您可以使用令牌值(如「17530101」,它是有效的日期時間),或者先將CONVERT SomeDateTime轉換爲varchar。

否則,我們需要爲什麼等

0

在你更新存儲過程的詳細信息:更新以前的日期值到一個新的空值:

.Parameters.AddWithValue("@Date_Value", Nothing).IsNullable = True 
相關問題