我正在尝试从表中获取一些记录,但是当我使用OR而不是AND时,它会返回少量记录,但在其他情况下则不然。 确切的日期列于表格中。我在做什么错误?
select newsid,title,detail,hotnews
from view_newsmaster
where datefrom>=CONVERT(datetime, '4-22-2010',111)
AND dateto<=CONVERT(datetime, '4-22-2010',111)
答案 0 :(得分:2)
我认为你的“来自”和“以”错误的方式......
select newsid,title,detail,hotnews from view_newsmaster
where dateto>=CONVERT(datetime, '4-22-2010',111) AND datefrom<=CONVERT(datetime, '4-22-2010',111)
答案 1 :(得分:2)
很难说没有表中的任何示例数据。
我会检查有多少记录的datefrom
值大于 dateto
值 - 这对我来说很奇怪 - 这可能是查询{{{ 1}}不会返回任何内容。
尝试使用AND
替换 dateto
值 - 请注意CONVERT(datetime, '4-23-2010',111)
是4月22日午夜(一天开始),而不是结束一天。
答案 2 :(得分:1)
这是因为日期意味着时间00:00:00,而不指定时间将排除那些落在一天的记录,但技术上是在范围内。
指定时间:
where datefrom>=CONVERT(datetime, '4-22-2010 00:00:00',111)
AND dateto<=CONVERT(datetime, '4-22-2010 23:59:59',111)
或者更好的是,使用BETWEEN运算符:
where fDateField BETWEEN '4-22-2010' AND '4-23-2010'
注意第二个日期是日期+ 1,即第二天,基本上是日期23:59:59
答案 3 :(得分:0)
当您使用AND
时,您将获得两个日期之间的日期(在这种情况下,相同的日期)。
当您使用OR
时,您将获得大于第一个的日期,然后是第二个日期。
它们是两种不同的条件,因此您的结果会有所不同。
你想要达到什么目的?这个查询应该返回什么?