我有一个循环,它通过一些条目。在循环中,我得到了创建日期,我需要查找是否在同一天插入了条目。因此,例如,如果 creation date = 2011-08-31 21:19:14.345
,我需要选择创建日期在 2011-08-31 00:00:00.000
和 2011-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/