2015-02-09 31 views
0

我有一個END_DATE表作爲CHAR(8)。有一個END_DATE =這種格式(12/31/2013)的某個日期或''或'/ /'值。CASE CONVERT將NULL值設置爲1/1/1900 SQL Sybase

我如何在END_DATE到當前日期運行一次?

例子:

SELECT RES_CODE, END_DATE 
FROM RES_DEFS 
WHERE CONVERT(DATETIME, CASE ISDATE(END_DATE) WHEN 1 THEN END_DATE ELSE '12/31/2099' END) > GETDATE() 

這其中不包括聲明空值(the ' ' values).這些值表示沒有END_DATE,並應設置爲將來的日期,但這種轉換將它們發送回至1900年!

非常感謝您提前!

回答

0

我已經想通了:

SELECT RES_CODE, END_DATE FROM RES_DEFS WHERE (CASE WHEN END_DATE= '' THEN '12/31/2099' WHEN ISDATE(END_DATE) = 1 then END_DATE else '12/31/2099' END) > GETDATE() 
+0

難道你不希望那些日期類型轉換爲你的問題?你確定你沒有得到字符串比較嗎? – shawnt00 2015-02-09 21:23:23

+0

也可以使用rtrim: – 2015-02-09 23:00:38