如何仅比较日期格式的yyyy-MM

时间:2015-04-09 08:28:14

标签: sql sql-server datetime

我的表格中有datetime字段,日期为

2012-11-29 00:00:00.000

我想在查询中设置where并仅过滤2012-11

等日期

我试图制作left(datefield,7) = for example '2012-10',但它不起作用。

我该怎么办?

4 个答案:

答案 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'

所以任务是用您正在使用的编程语言构建月份的结束和开始