Cha*_*ase 2 sql t-sql sql-server-2008
T-SQL用户SSMS 2008
我正在运行两个(应该是什么)有效相同的查询,这些查询从表(例如,表A)中提取记录,使用WHERE语句来定义将返回记录的日期参数.问题是,2个查询返回不同的计数.谁能帮我理解为什么?正如你所看到的,我试图从根本上拉出九月的记录.这是查询......
/*Returns 26,310 records*/
select A.*
from A
where A.Date between '9/1/2015' and '9/30/2015'
/*Returns 27,925 records*/
select A.*
from A
where YEAR(A.Date)*100 + MONTH(A.Date) = 201509
Run Code Online (Sandbox Code Playgroud)
如果您正在处理日期时间数据(而不是纯粹的日期,没有时间组件),我建议在使用独占端点之间进行放弃:
select A.*
from A
where A.Date >='20150901' and A.Date < '20151001'
Run Code Online (Sandbox Code Playgroud)
独占端点往往更容易计算,您不必担心时间组件的精度.
第一个查询的问题与- '9/30/2015'相同'9/30/2015 00:00:00'- 因此,例如,Date值'9/30/2015 00:00:01'(以及任何更晚的时间)大于该值.有些人试图计算一天中的最后一刻(23:59:59,或23:59:59.997),但你必须准确地得到它,否则你会错过价值观.因此我上面关于精确度的评论.
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |