我有一个表格,其中日期存储为varchar
,格式为DD.MM.YYYY
。
我创建了一个存储过程,它将查询此表并根据Month和Year返回结果。
我将有2个输入参数MM
和YYYY
- 两者都以字符串形式出现。
where子句将获得与月份和年份匹配的所有项目的内容是什么?我怀疑我需要使用LIKE运算符,因为它是varchar
字段。
感谢您的帮助,我的SQL生疏了。
答案 0 :(得分:2)
试试这个(假设@MM和@YYYY是你的输入参数):
SELECT *
FROM <YOUR_TABLE>
WHERE <DATE_COLUMN> LIKE '[0-9][0-9].' + @MM + '.' + @YYYY
答案 1 :(得分:1)
Select * from table1 t
where Month(Cast(t.DateCol as DateTime)) = Cast("1" as bigint)
AND Year(Cast(t.DateCol as DateTime)) = Cast("2011" as bigint)
答案 2 :(得分:1)
WHERE field LIKE "%." + @month + "." + @year
但是,最好的方法是使用正确的数据类型创建新列,运行脚本以在新列中填充正确的日期时间值,然后抛弃varchar列并使用以搜索日期时间的方式构建的MSSQL领域。从长远来看,这将为您提供更快的查找速度。
WHERE MONTH(field) = @month
AND YEAR(field) = @year
答案 3 :(得分:0)
SELECT * FROM t1 WHERE RIGHT(datecol,7)= @StringMM + "." + @StringYYYY