sql-server - 在 T-SQL 中获取过去 24 小时结果的最佳方法是什么?

标签 sql-server tsql

我正在为我的客户创建一个图表,他们希望获得 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/

相关文章:

c# - 在 SSIS 的脚本任务中连接到 SQL 数据库

SQL WHERE Like 子句不返回所有结果

sql - SQL Server 数据库中有多个 "ID"列?

sql - 具有三个表的递归 CTE

sql-server - 约束 GUI 在 SQL Server Management Studio 中如何工作?

sql-server-2008 - T-SQL if 语句错误

SQL查询根据数量条件计算前n个客户

c# - 如何确定任意一段 T-SQL 所需的参数?

sql - 一切的 DDL 触发器

c# - 使用流从 C# 中的 mssql 中获取图像