Sql Server:选择两个日期之间的日期并显示所有结果,包括重复

时间:2015-11-05 10:37:46

标签: sql sql-server sql-server-2008

我猜是坚持基本组。

select date,* from table

这让我回归了7000行。

假设min(date)是' 1989-5-12'和最大(日期)是' 2005-5-12',然后

select * from table where date between '1989-5-12' and '2005-5-12'

它让我回到6000行左右。 剩下的行在哪里?如何获得完整的结果(7000行),其中where子句的日期介于。

之间

3 个答案:

答案 0 :(得分:2)

显然,您的数据中包含NULL

select * from table 
where date between '1989-5-12' and '2005-5-12' or date is null

样本表:

('20150101'),
(null),
('20150102'),
('20150103'),
(null)

select * from table --will return 5 rows

select * from table 
where date between '20150101' and '20150103' --will return 3 rows

select * from table 
where date not between '20150101' and '20150103' --will return 0 rows

答案 1 :(得分:0)

请尝试以下

select * from table where date>='1989-5-12' and date<= '2005-5-12'

答案 2 :(得分:0)

其余行不适合您的where语句。要查看剩余的行,请执行以下操作:

select * from table where date NOT between '1989-5-12' and '2005-5-12'

如果没有任何数据,我们无法说明您为什么不从select语句中获取它们。