sql 如何判断一个字段的数据是否为日期形式,并将是日期形式的select出来

来源:百度知道 编辑:UC知道 时间:2024/06/25 21:25:10
比如有一个字段,数据如下:
ABCDE
------
690322
939900
910203
550103
881305
...
我想通过SQL函数将ABCDE字段当中符合日期形式的数据(690322,910203,550103)select出来,排除非日期形式的数据(939900,881305)有没有什么好的办法?
当然,真正的库表行数很多,以上只是举例。谢谢高手了!!
解决问题,再加50分!

两个字符两个字符来判断
substring(字段名,1,2)----好象年就没什么可判断的了
substring(字段名,3,2)----between 01 and 12,不在范围内就不算日期
substring(字段名,5,2)----这个有点麻烦,要结合月份来判断,譬如2月有时有28天有时29天,其他月份有的31天,有的30天,所以可以判断between 01 and 28的肯定可以判断正确,如果超过28的要结合月份及年份来判断了

思路是用函数转换,如果出错则不是日期,以下抛砖引玉之用

begin
declare @c varchar(10)
declare @d datetime
set @c =...
set @d = convert(datetime ,@c)
if @@error >0
print '不是日期'
end

select * from table where isdate(stuff(Stuff(ABCDE,3,0,'-'),6,0,'-'))=1

我倒没听说过,继续跟踪。
其实如果你不嫌烦的话,可以在数据库里加以个字段比标识是否为日期,自己写个逻辑,每次插入的时候判断下。