我需要执行日期搜索,但数据是格式为
的字符串'日/月/年'
我只想搜索' mm / yyyy'
例如,我希望所有记录都包含' 07/2014'不管是哪一天?
我确定它的简单内容无法弄清楚
修改: 看起来格式是MM / DD / YYY 看起来我刚刚使用了这个分类:
RIGHT(BookedDate,5) = '/2014'
AND LEFT (BookedDate,2) = '7/'
全部谢谢:)
答案 0 :(得分:2)
如果您的字符串格式为dd/mm/yyyy
,则01/09/2014
可以正确使用
declare @val as varchar(10)
Set @val='1/2/2014'
RIGHT(@val,7)
如果您不确定格式,但知道有/
可以搜索它:
declare @val as varchar(10)
Set @val='1/2/2014'
select right(@val,len(@val)-patindex('%/%',@val))
答案 1 :(得分:1)
myfield like '%/07/2014'
请注意,由于通配符(%)放在查询的开头,因此不会使用索引(如果存在)。这将始终是一个全表扫描。
答案 2 :(得分:0)
如果您将日期值存储在基于character
的列中,那么 jyparask 答案就足够了,但如果您将其存储在基于date/time
的列中,然后使用日期/时间函数或间隔:
WHERE
myDateColumn >= '01/07/2014'
AND myDateColumn < '01/08/2014'
以上WHERE
条件表示:2014年7月的所有值。
答案 3 :(得分:0)
这将确保,因为它是一个字符串,如果值超过预期,前三个字符将始终被删除。
SELECT RIGHT(field, LEN(field)-3) FROM database
答案 4 :(得分:0)
这感觉非常糟糕。如果使用Date而不是String,很可能会有大量的优化可以由数据库自动完成查询。 如果您的数据库增长,这肯定会成为某种瓶颈,它必须询问并解析每一行,以确定它是否符合您的请求。