sql查询中time字段的使用 |
本文标签:sql查询 time字段应该算是sql 语句中一个特殊字段,在sql查询中如何使用time字段成为了我们需要思考的问题,下面就将为您分析该问题的处理方法,供您参考 。 在vbscript中插入的时候我们因该使用 #2007-5-1#这样的格式,在sql server 中也可以用2007-5-1他会自动转换成时间格式,但在sql查询中因该怎么使用呢 。 比如我在数据库中设置了一个 user_time 时间字段,现在我们用这个来进性查询操作 比如我要找某个=与某个日期的数据: 可以这样写: SELECT * FROM table WHERE user_regTime =2007-05-01 写是搜索不到数据的 。 因为虽然前面相等但是后面还是不相等的 。 这因该怎么解决呢 。这就需要DATEDIFF函数来解决了,他会自动计算某个日期的差额,一半我们设置为day =0就可以了 。 例如:SELECT * FROM table WHERE DATEDIFF(day,user_regTime 2007-05-01 )=0 但是做大与 小与的数据可以直接user_regTime >2007-05-01 这时其实比较字段值和2007-05-01 00:00:00 的大小了 。 还有比较特殊的查询就是周查询了,因为在国外的星期天是星期一这点和中国的不一样,所以取周的时候因该把当前日期全部退够一天才能比较 。 完整语句就是: modifydate是时间字段,dw是返回星期几,dateadd里面的-1是在当前日期减去1天 好多人写刷选一周的是这样写的 datediff(d,modifydate,getdate())<=7这样写其实是不对的,因为在一周的星期二时间和上周的星期6之间他们之间是不同周,但时间差4天还是<=7的 。 还就是月份 datediff(d,modifydate,getdate())<=32这样写也是不对,道理同上 。 因该这样写datepart(m,modifydate)=datepart(m,getdate())
|