开发者

Why date comparison in sql is not working. Please help

I am trying to fetch some records from table but when i use OR instead of AND it returns me few records but not in other case. dates given exactly are present in table. What mistake i am doing ?

select newsid,title,detail,hotnews 
from view_newsmaster
where  datefrom>=CONVERT(datetime, '4-22-2010',111) 
  AND dateto<=CONVERT(datetime, '4-22-2010',111)
开发者_StackOverflow


I think you have your "from" and "to" round the wrong way...

select newsid,title,detail,hotnews from view_newsmaster 
 where  dateto>=CONVERT(datetime, '4-22-2010',111) AND datefrom<=CONVERT(datetime, '4-22-2010',111) 


Hard to say without any exemplary data from your table.

I would check how many records have datefrom value greater then dateto value -- it looks strange for me -- this could be a reason why query with AND doesn't return anything.

Try to replace dateto value with CONVERT(datetime, '4-23-2010',111) -- keep it mind that CONVERT(datetime, '4-22-2010',111) is midnight (beginning of day) 22ed April, not the end of day.


It's because dates imply time 00:00:00, and not specifying times will exclude those records falling on a day, but are technically within range.

Specify times:

where  datefrom>=CONVERT(datetime, '4-22-2010 00:00:00',111) 
  AND dateto<=CONVERT(datetime, '4-22-2010 23:59:59',111)

Or better yet, use the BETWEEN operator :

where  fDateField BETWEEN '4-22-2010' AND '4-23-2010'

Note how the second date is date+1, ie the next day, which is basically date 23:59:59


When you are using AND, you will get dates between the two dates (in this case, the same date).

When you are using OR you will get dates larger than the first and lower then the second.

They are two different conditions, so it stands to reason that your results will be different.

What are you trying to achieve? What should this query return?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜