Tsql t-SQL强制转换日期返回的时间少于2天

Tsql t-SQL强制转换日期返回的时间少于2天,tsql,datetime,date,casting,Tsql,Datetime,Date,Casting,有人能解释一下为什么在日期前2天铸造datetime to date会返回一个日期吗 我只是遇到了这个,需要理解 只需执行以下操作: SELECT CAST(FLOOR(CAST(GETDATE() AS float)) AS datetime) AS currDate, CAST(CAST(FLOOR(CAST(GETDATE() AS float)) AS datetime) AS DATE) AS lessDays 在我的Sql Server 2008中,R2向我返回以下信息

有人能解释一下为什么在日期前2天铸造datetime to date会返回一个日期吗

我只是遇到了这个,需要理解

只需执行以下操作:

SELECT 
  CAST(FLOOR(CAST(GETDATE() AS float)) AS datetime) AS currDate, 
  CAST(CAST(FLOOR(CAST(GETDATE() AS float)) AS datetime) AS DATE) AS lessDays
在我的Sql Server 2008中,R2向我返回以下信息:

----------------------------------------------
|          currDate         |    lessDays    |
----------------------------------------------
|   2011-08-28 00:00:00.0   |   2011-08-26   |
----------------------------------------------
提前感谢

这是一个不处理
日期
数据类型的问题


我运行它,得到两列相同的值……运行此查询时,您的本地时间是几点?对
GETDATE()
的两次调用可能会返回不同的结果,因此,如果您恰好在午夜运行它,则可以解释1天的差异。如果您始终得到不同的结果,您可以尝试执行
中选择并查看执行计划,看看计算标量操作会说什么吗?Float不可靠;DATEADD/DATEDIFF是最快和最简单的reliable@OMG-您可以直接从
datetime
转换到
date
来提取日期。不需要通过
float
datetime
进行任何往返。仍然不能解释OP的观察结果。同上@Sparky。两列的值相同。