我正在为我的客户创建一个图表,他们希望获得 24 小时、3 天、1 周、1 个月等期间的客户总数。老实说,我并不是最擅长 SQL,因此生成这些查询不是我的强项。
关于在 24 小时内吸引客户,我遇到了两个可能有效的“where”语句,但我不确定哪个是最好的。
第一个版本:
WHERE DATEDIFF(hh,CreatedDate,GETDATE())>24
第二个版本:
WHERE CreatedDate >= DATEADD(HH, -24, GETDATE())
第一个版本生成 21 行,第二个版本生成 17 行(当然来自同一数据集),因此显然一个版本比另一个版本更准确。我倾向于第一种,但我想听听你的意见......拜托。
谢谢, 安德鲁
最佳答案
避免使用第一个版本。首先,因为它禁用了索引的利用。第一个版本的第二个(功能)问题是,DATEDIFF(HOUR...)
返回所有小于 25 小时的值。为了清楚起见,请尝试以下操作:
SELECT DATEDIFF(HOUR, '2010-07-19 00:00:00', '2010-07-20 00:59:59.99')
关于sql-server - 在 T-SQL 中获取过去 24 小时结果的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293535/