t-sql - Sybase (T-SQL) 中 varchar 日期验证的最佳方法?

标签 t-sql validation datetime varchar sap-ase

我有一个存储过程,它采用 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/

相关文章:

sql - T-SQL 选择第一个实例

ios - CupertinoTextField 中的 Flutter 文本验证

database - 如何确定一个日期范围是否出现在另一个日期范围内的任何时间?

javascript - 如何将 DateTime 字符串格式转换为其他 DateTime?

angularjs - 如何在 AngularJS 中显示错误消息?

c++ - 转换时间戳(以毫秒为单位)以 boost ptime

sql - MS SQL Server 2012 - 如果行不存在则插入值

SQL 对未透视表进行透视

sql - sql server 中的舍入值

即使验证返回 false,JQuery 表单也会被提交