我有一个存储过程,它采用 varchar 作为参数,需要将其转换为日期时间以供以后使用:
SET @the_date = CAST(@date_string AS DATETIME)
我期望以“DD-MON-YYYY”格式提供日期字符串,但为了进行防御性编码,如果由于某种原因无法成功转换,我想默认为系统日期并继续。在 PL/SQL 中,我可以使用异常处理来实现这一点,而且我也可以使用正则表达式相当轻松地做到这一点,但是 Sybase 支持的开箱即用的有限模式匹配不允许我这样做,而且我不能依赖第三方库或扩展。在 T-SQL 中是否有一种简单的方法可以做到这一点?
注意:使用Sybase ASE 12.5.3,没有ISDATE功能
最佳答案
我也有类似的问题。你也许可以做这样的事情:
SET arithabort arith_overflow off
SET @the_date = CAST(@date_string AS DATETIME)
IF @the_date is NULL
set @the_date = getdate()
SET arithabort arith_overflow on
但是,这在选择中效果不佳。它在游标 (boo) 或 SQL 批处理之前/之后的逻辑中运行良好。
关于t-sql - Sybase (T-SQL) 中 varchar 日期验证的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019/