当列是T-SQL查询中的时间戳记时,基于日期获取COUNT?

时间:2019-11-05 15:57:48

标签: sql-server

我正在尝试基于日期进行计数,但该列是时间戳记。我想我需要将强制转换函数放在FROM语句之后,但不确定。

Select Count(X), Cast(Y as date)
From table
Where Y = '2019-04-01';

我尝试了上述查询的一堆衍生工具,我已经运行了一些查询,但仍然无法获得实际的输出。我似乎在Google上找不到很好的例子,所以我认为这里的某个人可能遇到了这个问题。不支持TO_CHARTRUNK

当前代码:

SELECT COUNT([X]), CAST(Y AS date)
FROM table
WHERE Y = '04/01/2019'
GROUP BY Y ORDER BY Y;

运行,但不返回任何输出(我知道有结果)。


SELECT COUNT([email]), processed
FROM [AJM].[dbo].[EmailSend]
CAST(processed AS date)
WHERE processed = '04/01/2019'

按已处理订单分组,已处理;

错误:

  

“已处理”不是公认的表提示选项。如果要将其用作表值函数或CHANGETABLE函数的参数,请确保将数据库兼容模式设置为90。

目标是在指定的日期之前获得X或Y的计数。

2 个答案:

答案 0 :(得分:0)

您是否需要以下类似内容?

SELECT COUNT([email]), processed
FROM [AJM].[dbo].[EmailSend]
WHERE CAST(processed AS date) = '04/01/2019'

答案 1 :(得分:0)

如果您要比较日期和时间戳,则可能运气不佳。请尝试以下操作:

SELECT COUNT([X]), CAST(Y AS date)
FROM table
WHERE Y = CAST('2019-04-01' as TIMESTAMP)
GROUP BY Y ORDER BY Y;

通过投射右侧而不是左侧,您仍然可以利用索引功能。

相关问题