我有一个循环,它通过一些条目。在循环中,我得到了创建日期,我需要查找是否在同一天插入了条目。因此,例如,如果 creation date = 2011-08-31 21:19:14.345 ,我需要选择创建日期在 2011-08-31 00:00:00.0002011-08-31 23:59:59.999 之间的所有行

如何使用 SQL 执行此操作?

最佳答案

没有任何其他架构细节,如果这是 SQL Server 2K8+,你可以这样做:

DECLARE @CreationDate Date = '2011-08-31';

SELECT *
FROM SomeTable
WHERE CONVERT(Date, CreationDate) = @CreationDate;

通过转换为 date 而不是使用 datetime,您会丢失时间组件并“规范化”您比较值的方式。

出于比较目的而丢失时间分量的另一种方法是:
DECLARE @CreationDate DateTime;
SELECT @CreationDate = '2011-08-31 21:19:14.345';

SELECT @CreationDate; -- 2011-08-31 21:19:14.345
SELECT @CreationDate = CONVERT(DateTime, FLOOR(CONVERT(Float, @CreationDate)));
SELECT @CreationDate; -- 2011-08-31 00:00:00.000

如果您没有 date 数据类型,您将使用它。

关于SQL Server : How to select rows that were inserted on the same day?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8404842/

10-12 07:16