sql查詢中time字段的使用
time字段應(yīng)該算是sql 語句中一個特殊字段,在sql查詢中如何使用time字段成為了我們需要思考的問題,下面就將為您分析該問題的處理方法,供您參考。
在vbscript中插入的時候我們因該使用 #2007-5-1#這樣的格式,在sql server 中也可以用'2007-5-1'他會自動轉(zhuǎn)換成時間格式,但在sql查詢中因該怎么使用呢。
比如我在數(shù)據(jù)庫中設(shè)置了一個 user_time 時間字段,現(xiàn)在我們用這個來進(jìn)性查詢操作
比如我要找某個=與某個日期的數(shù)據(jù):
可以這樣寫:
SELECT * FROM table WHERE      user_regTime ='2007-05-01 09:45:25.263'       這里因?yàn)闀r間字段在寫入數(shù)據(jù)庫時會自動把沒有的結(jié)尾的部分自動補(bǔ)上所以直接這樣寫:
SELECT * FROM table WHERE user_regTime ='2007-05-01' 寫是搜索不到數(shù)據(jù)的。 因?yàn)殡m然前面相等但是后面還是不相等的。
這因該怎么解決呢。這就需要DATEDIFF函數(shù)來解決了,他會自動計(jì)算某個日期的差額,一半我們設(shè)置為day =0就可以了。
例如:SELECT * FROM table WHERE DATEDIFF(day,user_regTime '2007-05-01' )=0
但是做大與 小與的數(shù)據(jù)可以直接user_regTime >'2007-05-01' 這時其實(shí)比較字段值和2007-05-01 00:00:00 的大小了。
還有比較特殊的查詢就是周查詢了,因?yàn)樵趪獾男瞧谔焓切瞧谝贿@點(diǎn)和中國的不一樣,所以取周的時候因該把當(dāng)前日期全部退夠一天才能比較。
這里運(yùn)用了:datediff返回時間間隔函數(shù)
                   datepart取當(dāng)前時間的某一段函數(shù)
                   DATEADD 增加某個時間段函數(shù)
完整語句就是:
select * from bbs_topics where datediff(d,modifydate,getdate())<(datepart(dw,DATEADD(day, -1, getdate())))
注意這里<而不是<=這是因?yàn)橛?jì)算日期間隔是從0開始的所以間隔6就是星期一了,如過還=7則連上星期天都計(jì)算進(jìn)去了。
modifydate是時間字段,dw是返回星期幾,dateadd里面的-1是在當(dāng)前日期減去1天
好多人寫刷選一周的是這樣寫的 datediff(d,modifydate,getdate())<=7這樣寫其實(shí)是不對的,因?yàn)樵谝恢艿男瞧诙r間和上周的星期6之間他們之間是不同周,但時間差4天還是<=7的。
還就是月份 datediff(d,modifydate,getdate())<=32這樣寫也是不對,道理同上。
因該這樣寫datepart(m,modifydate)=datepart(m,getdate())
取的字段值里面的月,在和當(dāng)前月比較相等就是同一月,不等就是不同月。
 
【編輯推薦】















 
 
 


 
 
 
 