2011-07-13 50 views
0

我有一个表格,其中日期的存储形式为varchar,格式为DD.MM.YYYY需要SQL语句帮助

我创建了一个存储过程,将查询此表并返回基于月和年的结果。

我将有2个输入参数是MMYYYY - 都以字符串形式出现。

什么地方条款将获得所有项目匹配的月份和年份?我怀疑我需要使用LIKE运算符,因为它是varchar字段。

我的SQL很生锈,谢谢你的帮助。

+0

什么RDBMS是这个呢? – Jacob

+0

MS SQL Server 2008 R2 –

回答

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) 
1
WHERE field LIKE "%." + @month + "." + @year 

然而,最好的方法是创建具有正确数据类型的新列,运行一个脚本来填充新列的正确日期时间值,则沟VARCHAR列,并使用MSSQLs建立在搜索日期时间字段的方式。从长远来看,这将为您提供更快速的查找。

WHERE MONTH(field) = @month 
     AND YEAR(field) = @year 
+0

+1用于转换为日期。只编辑:s/MySQL/MSSQL;) – Jacob

+0

Doh,在这个问题中,我读“My SQL is rusty”为“My MySQL is rusty”。 :) –

+0

不错的一个:D(15 ...) – Jacob

2

试试这个(假设@MM和@YYYY是你的输入参数):

SELECT * 
    FROM <YOUR_TABLE> 
WHERE <DATE_COLUMN> LIKE '[0-9][0-9].' + @MM + '.' + @YYYY 
0
SELECT * FROM t1 WHERE RIGHT(datecol,7)= @StringMM + "." + @StringYYYY