如果判断是否正确日期格式

hq0927 2010-09-07 04:55:08
一个varchar字段..如果判断里的字符是否正确的日期
例如里面有'2010-02-30' 的值
用过isdate函数没有办法过滤

...全文
369 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcw321321 2010-09-07
  • 打赏
  • 举报
回复
在传'1408-06-25' 参数之前就应该判断了,合符条件才能执行datediff函数
hq0927 2010-09-07
  • 打赏
  • 举报
回复
对不起..各位.可能我误导大家了.我重点测试的是datediff函数
select datediff(year,'1408-06-25','2010-09-07')
例如这个
lcw321321 2010-09-07
  • 打赏
  • 举报
回复
在你的语句后面加上 where ISDATE(RQ)=1 都不行吗?
lcw321321 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hq0927 的回复:]
服务器: 消息 242,级别 16,状态 3,行 1
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。


一样的错误.

因为我也试了用
rq like '[1-9][8-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]'

这个条件来过虑.也提示上面的错误.所以我估计是有类似2010-02-31这要的日期在.
[/Quote]
用你楼上的那个不行吗?
hq0927 2010-09-07
  • 打赏
  • 举报
回复
服务器: 消息 242,级别 16,状态 3,行 1
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。


一样的错误.

因为我也试了用
rq like '[1-9][8-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]'

这个条件来过虑.也提示上面的错误.所以我估计是有类似2010-02-31这要的日期在.
就是just4 2010-09-07
  • 打赏
  • 举报
回复
SELECT CASE WHEN ISDATE('2010-02-30')=1 THEN '有效日期' ELSE '无效日期' END 
--------
无效日期

(所影响的行数为 1 行)
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
--貌似这样就可以了
select *
from ta
where isdate(rq)=1
and datediff(year,rtrim(cast(rq as datetime)),'2010-09-07')>=50
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
--try
select *
from ta
where id in (
select id from ta where isdate(rq)=1)
and datediff(year,rtrim(cast(rq as datetime)),'2010-09-07')>=50
and isdate(rq)=1
hq0927 2010-09-07
  • 打赏
  • 举报
回复
这样是有问题的..
hq0927 2010-09-07
  • 打赏
  • 举报
回复
select * from ta where id in (
select id from ta where isdate(rq)=1)
and datediff(year,rtrim(cast(rq as datetime)),'2010-09-07')>=50
hao1hao2hao3 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hq0927 的回复:]
我就是试过isdate也没有过滤掉
[/Quote]

你运行一下1楼我的语句看看结果就知道了。
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hq0927 的回复:]
我就是试过isdate也没有过滤掉
[/Quote]
确定吗
hq0927 2010-09-07
  • 打赏
  • 举报
回复
我就是试过isdate也没有过滤掉
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
isdate 可以过滤
billpu 2010-09-07
  • 打赏
  • 举报
回复
isdate
hao1hao2hao3 2010-09-07
  • 打赏
  • 举报
回复


declare @s varchar(20)
set @s ='2010-02-30'
if isdate(@s) =1
print '是有效时间格式'
else
print '不是有效时间格式'

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧