2015-02-09 48 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