2015-06-01 193 views
-1

我想在表中設置一個列來表示'沒有日期集',如果DB中的列有一個日期值爲NULL。如果該列有日期值,那麼我想顯示它。這個SQL是所有內的存儲過程,然後將值傳遞給應用程序從字符串轉換日期和/或時間時,SQL轉換失敗

DB值的類型DATETYPE的,NULL

enter image description here

這裏是我到目前爲止已經試過

,CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'no date set' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry] 

結果enter image description here

COALESCE(CAST(NULL AS DATETIME),'no date set'),[TB_EVNTEXP]。[StartDate] A S [有效期]

導致轉換錯誤。

這可以工作,但所有的空值在我的表中爲空。

,[TB_EVNTEXP].StartDate]     AS [cardexpiry] 

花的方式來對這麼多時間了,可以用一臂之力:)

乾杯 保羅做

+0

當它這樣它的工作原理,[TB_EVNTEXP] .StartDate] \t \t AS [cardexpiry]但是當它這樣的失敗,ISNULL([TB_EVNTEXP。 [開始日期], '無日期設定')\t \t \t \t \t \t \t \t \t AS [cardexpiry] – Paul

回答

1

看來你使用的是SQL Server,它不允許你混串與日期格式。

試試這個:

SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN '' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry] 
FROM 

,或者您需要將日期轉換爲varchar將其與空值的混合:

SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'not set' ELSE CONVERT(VARCHAR, [TB_EVNTEXP].[StartDate]) END AS [expiry] 
FROM 
+0

BOOM !!非常感謝:)正是我需要的!轉換爲一個varchar。謝謝保羅 – Paul

0

這是發生的錯誤:

COALESCE(CAST(NULL AS DATETIME), 'no date set'), 

這在邏輯上是相同的,它運行。

COALESCE(NULL, 'no date set'), 

或更好,但

'no date set' 
相關問題