Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
通栏广告
让人意外的 IsDate 和 CDate

从客户端获取的日期类型字符串,我们一般要先判断是否是日期类型,然后再进入 SQL 语句。

起初,我是这样判断的:
if not IsDate(dt) then
    'dt 不是日期类型,终止执行
end if

但在 SQL 语句执行时,仍然出现了 dt 不是 datetime 类型的错误。

原来 IsDate 的参数是日期表达式或字符串表达式,而这个日期表达式是这样的:任何可以被解释为日期的表达式,包括任何日期文字、看起来象日期的数字及字符串和由函数返回的日期的组合。

也就是说 IsDate 太聪明了,像“2005-1-拾”、“2005-1-一”、“2005-1-1”这样的表达式,它都认为是正确的日期表达式,它会返回 true,但 SQL 里面则不这么宽松了。

所以我们的判断要改一下:
if IsDate(dt) then
    dt = CDate(dt)
else
    'dt 不是日期类型,终止执行
end if

作一下强制转换,“2005-1-拾”就会被转换成“2005-1-10”之类的形式,就会被 SQL 所认识了。

但是“2005-1-壹拾”竟被 CDate 转换成“2005-1-11”,“2005-1-贰拾伍”被转换成“2005-1-26”就值得注意了,“2005-1-拾”或“2005-1-贰伍”能够被正常转换。

文章评论
标题:必填
内容:
文章信息