如何只选择日期时间最新的地方

时间:2017-09-01 06:01:57

标签: sql-server tsql datetime

所以我有一些列包含日期,时间如2017-09-01 05:24:03.090

我希望只获取当天的所有列,例如2017-09-01

我一直在尝试

where item.DateTimeModified = CONVERT (date, GETDATE ());

但那并没有给我什么,所以我该怎么做呢

5 个答案:

答案 0 :(得分:2)

where CONVERT(NVARCHAR,item.DateTimeModified,105) = CONVERT (NVARCHAR, GETDATE (),105);

答案 1 :(得分:2)

您需要转换两个日期时间值。
否则将ìtem.DateModified的整个日期时间值与当前日期值进行比较。

WHERE CONVERT(date, item.DateTimeModified) = CONVERT(date, GETDATE());

答案 2 :(得分:0)

您可以先修改修改日期,然后与规范化的当前日期进行比较。对于规范化,首先将日期转换为float,然后使用floor,然后将其转换为datetime。

where cast(floor(cast(item.DateTimeModified as float)) as smalldatetime) = cast(floor(cast(GETDATE () as float)) as smalldatetime);

答案 3 :(得分:0)

这样做: -

CAST(item.DateTimeModified AS DATE) = CAST(GETDATE() AS DATE)

答案 4 :(得分:0)

SARGABLE查询将是:

declare @Today as Date = Cast( GetDate() as Date ), @Tomorrow as Date;
set @Tomorrow = DateAdd( day, 1, @Today );

... where item.DateTimeModified >= @Today and item.DateTimeModified < @Tomorrow ...