<b>sql查询中time字段的利用</b>[MSSQL防范]
本文“<b>sql查询中time字段的利用</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
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 09:45:25.263' 这里因为时间字段在写入数据库时会自动把没有的末尾的部份自动补上所以直接这样写:
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 的大小了.
还有对比特别的查询就是周查询了,因为在国外的星期天是星期一这点和中国的不一样,所以取周的时刻因该把当前日期全部退够一天才能对比.
这里应用了:datediff返回时间隔断函数
datepart取当前时间的某一段函数
DATEADD 增添某个时间段函数
完好语句就是:
select * from bbs_topics where datediff(d,modifydate,getdate())<(datepart(dw,DATEADD(day, -1, getdate())))
注意这里<而不是<=这是因为计算日期隔断是从0开始的所以隔断6就是星期一了,如过还=7则连上星期天都计算进去了.
modifydate是时间字段,dw是返回星期几,dateadd里面的-1是在当前日期减去1天
好多人写刷选一周的是这样写的 datediff(d,modifydate,getdate())<=7这样写其实是不对的,因为在一周的星期二时间和上周的星期6之间他们之间是差别周,但时间差4天还是<=7的.
还就是月份 datediff(d,modifydate,getdate())<=32这样写也是不对,原理同上.
因该这样写datepart(m,modifydate)=datepart(m,getdate())
取的字段值里面的月,在和当前月对比相等就是同一月,不等就是差别月.
以上是“<b>sql查询中time字段的利用</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |