SQL Server 2014 - 影响结果的投射日期

时间:2014-07-15 18:43:10

标签: sql casting sql-server-2014

以下两个条件有何不同? DateRecordCreated是一个DTM字段。

  1. cast([DateRecordCreated] as date) >= '2014-07-04' and cast([DateRecordCreated] as date) <= '2014-07-10'

  2. [DateRecordCreated] >= '2014-07-04' and [DateRecordCreated] <= '2014-07-10'

  3. 他们看起来像是一样的条件,但给我不同的结果。 #2给了我一个更低的数字。

1 个答案:

答案 0 :(得分:2)

第二个有时间成分。因此,DateRecordCreated正在与日期2014-07-10 进行比较而没有时间(在第二种情况下)。这意味着任何不完全在午夜的价值都将导致测试失败。

第一个版本会删除时间组件,因此它将包含该日期的所有时间。

作为一般规则,我会将此逻辑写为:

[DateRecordCreated] >= '2014-07-04' and [DateRecordCreated] < '2014-07-11'

Aaron Bertrand实际上有一个关于这个主题的非常有用的博客。我建议您阅读it