7 | 2015.03 | 1 | 169 | 322 | 1 |
8 | -- | -- | -- | 322 | 1 |
9 | 2015.03 | -- | 169 | 322 | 1 |
我想先过滤点法字符的数据,然后根据日期 查询
selec * from 表 where 日期 between 2015.01 and 2015.05 ,可是有非法字符,必须先过滤掉非法字符的数据,请哪位大侠帮忙!
如果你的类型是Datetime类型, 那不可能有特殊字符... 如果是varchar类型..就算有特殊字符..好像用between的查出正确的数据吧....
我试了一下. 好像是可以的..
sql server ,数据库字段是nvarchar类型,这些都是爬虫爬到的数据,爬到什么就插入什么数据,有的word和pdf 的数据就是有“--”,所有才会有非法字符,我需要用到 DateAdd(YYYY,-2,'日期'),这个函数不能转非法字符,所以我想知道解决办法,如果没有非法字符,就好说了,必须先过滤掉非法字符,在以日期为准,通过DateAdd(YYYY,-2,'日期'),查找以日期为准到两年前之内的数据!
@.net-yang:
因为你的日期是年月 格式的 .. 所以好多函数都不能用了.. 所以暂时想不出什么好办法..
如果你的日期是 年月日格式的.. 可以用下面的语句. Date是 TestTable的一个字段.
SELECT * FROM dbo.TestTable WHERE 1=(CASE WHEN ISDATE([Date])=1 AND [Date] BETWEEN DATEADD(YEAR,-2,GETDATE()) AND GETDATE() THEN 1 ELSE 0 END)
@李丶GuanYao: 谢谢,还是有帮助,以后应该会用到!自己想到了办法,可能方法有点笨,我是先通过sql过滤掉非法字符的数据,然后通过程序来取时间,用>=符号来取时间段的数据,呵呵!
你用的什么数据库? 那个日期是什么类型的,为什么还会有非法字符,如果是char或varchar的,mysql执行上面的语句就可以。
sql server ,数据库字段是nvarchar类型,这些都是爬虫爬到的数据,爬到什么就插入什么数据,有的word和pdf 的数据就是有“--”,所有才会有非法字符,我需要用到 DateAdd(YYYY,-2,'日期'),这个函数不能转非法字符,所以我想知道解决办法,如果没有非法字符,就好说了,必须先过滤掉非法字符,在以日期为准,通过DateAdd(YYYY,-2,'日期'),查找以日期为准到两年前之内的数据!
个人觉得还是在爬取的时候对该字段进行处理,不然数据库该字段的格式可能会有很多种,写出来的sql会很复杂。
谢谢,知道了,毕竟爬虫程序不是我来写,也没有必要要求那么多,对吧,呵呵!