我的表格中有datetime
字段,日期为
2012-11-29 00:00:00.000
我想在查询中设置where
并仅过滤2012-11
我试图制作left(datefield,7) = for example '2012-10'
,但它不起作用。
我该怎么办?
答案 0 :(得分:3)
试试这个:
在sql-server
...where LEFT(CONVERT(varchar, datefield,112),6)
答案 1 :(得分:3)
我建议您使用YEAR()
和MONTH()
函数进行比较:
YEAR(fielddate) = 2012 AND MONTH(fielddate) = 10
或
SUBSTRING(CONVERT(varchar, fielddate, 112), 1, 6) = '201210'
或
CONVERT(varchar, fielddate, 112) Like '201210%'
注意:
您可以使用REPLACE('2012-10', '-', '')
来201210
。
答案 2 :(得分:0)
我认为这会有所帮助 - 在SQL SERVER中
where convert(varchar,datepart(yyyy,getdate()))+'-'+convert(varchar,datepart(MM,getdate()))
答案 3 :(得分:0)
出于性能原因,将日期作为字符串进行比较并不好。所以最好尝试范围方法,如:
where date BETWEEN '2012-11-01' AND '2012-12-01'
所以任务是用您正在使用的编程语言构建月份的结束和开始