靈魂-放水

          為學日益,為道日損。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

          select convert(varchar(8),getdate(),112)

          Sql 中日期函數的比較
          作者:corin 日期:2006-06-15
          字體大小: 小 中 大?
          下午公司的項目完成了會員系統,會員可以后臺設置到期時間!

          大概字段有PostDate,EndDate標志注冊時間和到期時間!

          上午把到期時間,剩余天數及24小時登錄和和注冊的用戶多完成了,用了一個函數DateDitt

          檢測24小時登錄和注冊用戶的Sql語句:

          Case "Login":strSql=strSql+HZ.iif(Instr(strSql,"Where")>0," AND DateDiff(hh,LastDate,getdate())<25"," Where DateDiff(hh,LastDate,getdate())<25")
          Case "Reg":strSql=strSql+HZ.iif(Instr(strSql,"Where")>0," AND DateDiff(hh,PostDate,getdate())<25"," Where DateDiff(hh,PostDate,getdate())<25")

          其時已經實現了會員到期自動紅子提示,后來要完成搜索就是可以把離到期還剩余15天的會員多列舉出來,用DateDiff函數調試了半天多不正確,剛開始以為是“'”的問題, 后來檢查了發現沒有問題基本確認是DateDiff函數問題,可是上面檢測時間的時候正確,而且Sql中也可是使用這個函數,郁悶大概調試了2個小時問題依然沒有解決!

          偶然想到了DateAdd函數改SQL語句如下:

          Case "EndDate":strSql=strSql+HZ.iif(Instr(strSql,"Where")>0," AND EndDate < DateAdd(d,15,getdate())"," Where EndDate < DateAdd(d,15,getdate())")

          調試通過,呼呼奇怪的問題后臺去網上搜索下也沒有滿意的答案,只是找到這樣一段

          Select member_number, first_name, last_name? FROM members
          Where DATEDIFF(yy,datofbirth,GETDATE()) > 21
          應改為:
          Select member_number, first_name, last_name? FROM members
          Where dateofbirth < DATEADD(yy,-21,GETDATE())
          即:任何對列的操作都將導致表掃描,它包括數據庫函數、計算表達式等等,查詢時要盡可能將操作移至等號右邊。

          posted on 2007-01-11 20:22 放水老倌 閱讀(2083) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 天台县| 长沙县| 宜川县| 祁东县| 隆回县| 绥滨县| 民乐县| 调兵山市| 仲巴县| 运城市| 德阳市| 博乐市| 康保县| 邯郸市| 包头市| 奈曼旗| 伊金霍洛旗| 镇巴县| 来宾市| 商河县| 青冈县| 曲沃县| 保亭| 平利县| 洪湖市| 调兵山市| 介休市| 保康县| 榆社县| 南澳县| 蚌埠市| 巩留县| 齐齐哈尔市| 玛沁县| 友谊县| 响水县| 通渭县| 海兴县| 鸡东县| 乐清市| 德州市|