我的表格的创建日期如下:
SELECT [CreationDate] FROM Store.Order
因此每个寄存器都有一个日期时间,如:
2018-03-14 00:00:00.000
2017-04-14 00:00:00.000
2017-06-14 00:00:00.000
我想知道如何COUNT
只注册Date等于当前月份和年份,例如在这种情况下,如果我只有一个
在03月注册我只计算1,我怎样才能实现呢?此致
答案 0 :(得分:2)
这是一个选项:
SELECT COUNT(*)
FROM Store.Order
WHERE
CONVERT(varchar(7), [CreationDate], 126) = CONVERT(varchar(7), GETDATE(), 126);
我们可以将表格中的创建日期和当前日期转换为yyyy-mm
字符串,然后检查它们是否相等。
答案 1 :(得分:0)
最有效的方法是:
where creationdate >= dateadd(day, 1 - day(getdate(), cast(getdate() as date)) and
creationdate < dateadd(month, 1, dateadd(day, 1 - day(getdate(), cast(getdate() as date)))
虽然这看起来比其他解决方案更复杂,但所有复杂性都在getdate()
上 - 这意味着优化器可以使用creationdate
上的索引。