2012-11-23 05:49:26.000
2012-11-23 07:55:43.000
2012-11-23 13:59:56.000
2012-11-26 07:51:13.000
2012-11-26 10:23:31.000
2012-11-26 10:25:09.000
2012-11-26 16:22:22.000
2012-11-27 07:30:03.000
2012-11-27 08:53:47.000
2012-11-27 10:40:55.000
当我通过2012-11-27
....我想要输出分钟2012-11-27 07:30:03.000
,最大2012-11-27 10:40:55.000
答案 0 :(得分:2)
您需要了解的是日期比较:
select min(col), max(col)
from table t
where col >= '2012-11-27' and
col < dateadd(day, 1, '2012-11-27');
使用两个比较非常有意识地完成日期比较:
where cast(col as date) = '2012-11-27'
第一种方法是一个好习惯,因为它更有可能导致SQL Server在列上使用索引,特别是对于更复杂的表达式。
答案 1 :(得分:0)
Select Max(DateAttribute)
,Min(DateAttribute)
From Table As t
Where Dateadd(D, 0, Datediff(D, 0, DateAttribute)) = @DateFilter ----your parameter
上面的也可以在SQL Server 2005中使用,无需任何更改。
答案 2 :(得分:0)
我喜欢使用between关键字进行日期比较。我还提供了一个与您的数据匹配的示例表声明。
DECLARE @tempDates AS TABLE (myDate DATETIME)
INSERT INTO @tempDates VALUES
('2012-11-23 05:49:26.000'),
('2012-11-23 07:55:43.000'),
('2012-11-23 13:59:56.000'),
('2012-11-26 07:51:13.000'),
('2012-11-26 10:23:31.000'),
('2012-11-26 10:25:09.000'),
('2012-11-26 16:22:22.000'),
('2012-11-27 07:30:03.000'),
('2012-11-27 08:53:47.000'),
('2012-11-27 10:40:55.000')
SELECT
MIN(myDate) AS 'Min', MAX(myDate) AS 'Max'
FROM
@tempDates
WHERE
myDate BETWEEN CONVERT(DATETIME, '2012-11-27')
AND DATEADD(D,1, CONVERT(DATETIME, '2012-11-27'))