Eri*_*ric 7 sql sql-server datetime range
我想找出针对具有日期(没有时间)的日期时间记录集的查询的"最佳实践"方法.
我使用几个查询根据日期范围从使用日期时间数据类型的记录集返回记录,这意味着需要使用两者之间的范围来检查每个记录.
查询示例如下:
Select *
FROM Usages
where CreationDateTime between '1/1/2012' AND '1/2/2012 11:59:59'
Run Code Online (Sandbox Code Playgroud)
我知道使用BETWEEN资源是一种资源,并且检查日期的日期时间数据类型总是非常耗费资源,但我想听听其他人在这种情况下使用(或将使用)的内容.
我是否会将日期时间记录转换为日期的任何类型的性能提升:
Select *
FROM Usages
where CONVERT(DATE,CreationDateTime) between '1/1/2012' AND '1/2/2012'
Run Code Online (Sandbox Code Playgroud)
或者可能做一个少于/更大的检查呢?
Select *
FROM Usages
where (CreationDateTime > '1/1/2012')
AND (CreationDateTime < '1/2/2012 11:59:59')
Run Code Online (Sandbox Code Playgroud)
你认为你知道的不正确.
使用BETWEEN或DATETIME数据类型都不是资源占用.
如果您索引列,该列确实是DATETIME而不是VARCHAR(),并且您没有将该字段包装在函数中,那么一切都会很好而且快速.
那就是说,我会使用>=而<不是.不是为了表现,而是为了逻辑正确.
WHERE
myField >= '20120101'
AND myField < '20120102'
Run Code Online (Sandbox Code Playgroud)
无论字段是否包含小时,分钟或甚至(具有神话数据类型)pico秒,这都将起作用.
使用该字段的索引,它还将提供范围扫描.
你不会更快.不需要技巧或功能.
| 归档时间: |
|
| 查看次数: |
41392 次 |
| 最近记录: |