Jun 14, 2007

Sql语言之沧海一滴,时间查询

似乎我最头疼的就是DateTime类型的数据了。一部分原因是由于DateTime数据存储的是
年月日和时分秒,所以处理起来麻烦,还有原因是由于这部分的函数和一些常用的处理方法不熟,一句话,不就是认生嘛。
今天遇到一个问题,Sql Server里面要判断某个日期相等。
即如何与一个DateTime类型的字段值进行相等比较?这其中有这样的问题:
1、一般来说,用户输入的日期值就是yyyy/mm/dd,不带时、分、秒;
2、数据库中存储的日期值是带时、分、秒的。

所以我必须假定:我们所谓的两个日期相等就是年、月、日相等。
这里有一个比较好的处理方法,


假定我们要查的日期是2004/7/10,则其实我们想要的就是这一天的00:00:00至23:59:59之间的。提到之间,我们就会想到between...and!!只要 between 2004/7/10 and 2004/7/11 即可了。具体地说:between Cast('2004-7-10' as DateTime) and dateadd(day, 1, Cast('2004-7-10' as DateTime))。但这个方法有一个小小问题,它会把7/11 0点的东西也找到,而这其实不应算做7/10的。如果你还想精益求精的话,就只能用...>=... and ...<... 了。(一般情况下没有必要)

No comments: