sql查詢當天、本週、本月記錄

Sql 查詢當天、本週、本月記錄

–查詢當天:    

  1. select * from info where DateDiff(dd,datetime,getdate())=0      

–查詢24小時內的:    

  1. select * from info where DateDiff(hh,datetime,getDate())<=24      

–info爲表名,datetime爲數據庫中的字段值   

–查詢當天:

  1. select * from table where DateDiff(dd,datetime,getdate())=0 –查詢24小時內的: select * from table where DateDiff(hh,datetime,getDate())<=24  

–table 爲表名,datetime爲數據庫中的字段值


DATEDIFF 函數:
語法:

  1. select * from table where DateDiff(dd,datetime,getdate())=0 –查詢24小時內的: select * from table where DateDiff(hh,datetime,getDate())<=24  

備註:
enddate 減去 startdate。如果 startdate 晚於 enddate,則返回負值。
如果結果超出整數值範圍,則 DATEDIFF 將產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鐘零 23.647 秒。對於秒,最大數是 68 年。
跨分鐘、秒和毫秒等邊界計算的方法使得 DATEDIFF 指定的結果在所有數據類型中均一致。結果是帶正負號的整數值,它等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。

  1. –本月記錄     
  2. SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0      
  3.      
  4. –本週記錄      
  5. SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0      

–包括本年這些查詢方式是一樣的    

  1. –本月記錄  
  2.   
  3. SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0  
  4.   
  5. –本週記錄  
  6.   
  7. SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0   


–包括本年這些查詢方式是一樣的

sql server中的時間函數
1.   當前系統日期、時間

  1. select getdate()   

2. dateadd   在向指定日期加上一段時間的基礎上,返回新的 datetime 值
    例如:向日期加上2天

  1. select dateadd(day,2,’2004-10-15’)   –返回:2004-10-17 00:00:00.000  

3. datediff 返回跨兩個指定日期的日期和時間邊界數。

  1. select datediff(day,’2004-09-01’,’2004-09-18’)    –返回:17  

4. datepart 返回代表指定日期的指定日期部分的整數。

  1. SELECT DATEPART(month, ’2004-10-15’)   –返回 10  

5. datename 返回代表指定日期的指定日期部分的字符串

  1. SELECT datename(weekday, ’2004-10-15’)   –返回:星期五  

6. day(), month(),year() –可以與datepart對照一下

  1. select 當前日期=convert(varchar(10),getdate(),120),當前時間=convert(varchar(8),getdate(),114)  
  2. select datename(dw,’2004-10-15’)  
  3. select 本年第多少周=datename(week,’2004-10-15’)  
  4.        ,今天是周幾=datename(weekday,‘2004-10-15’)  




函數 參數/功能 
GetDate( ) 返回系統目前的日期與時間 
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期 
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值 
DateName (interval,date) 返回日期date中,interval指定部分所對應的字符串名稱
參數 interval的設定值如下:
值 縮 寫(Sql Server) Access 和 ASP 說明 
Year Yy yyyy 年 1753 ~ 9999 
Quarter Qq q   季 1 ~ 4 
Month Mm m   月1 ~ 12 
Day of year Dy y 一年的日數,一年中的第幾日 1-366 
Day Dd d   日,1-31 
Weekday Dw w 一週的日數,一週中的第幾日 1-7 
Week Wk ww 周,一年中的第幾周 0 ~ 51 
Hour Hh h   時0 ~ 23 
Minute Mi n 分鐘0 ~ 59 
Second Ss s 秒 0 ~ 59 
Millisecond Ms - 毫秒 0 ~ 999

access 和 asp 中用date()和now()取得系統日期時間;其中DateDiff,DateAdd,DatePart也同是能用於Access和asp中,這些函數的用法也類似

舉例:
1.GetDate() 用於sql server :select GetDate()
2.DateDiff(’s’,’2005-07-20’,’2005-7-25 22:56:32’)返回值爲 514592 秒
DateDiff(‘d’,’2005-07-20’,’2005-7-25 22:56:32’)返回值爲 5 天
3.DatePart(‘w’,’2005-7-25 22:56:32’)返回值爲 2 即星期一(週日爲1,週六爲7)
DatePart(‘d’,’2005-7-25 22:56:32’)返回值爲 25即25號
DatePart(‘y’,’2005-7-25 22:56:32’)返回值爲 206即這一年中第206天
DatePart(‘yyyy’,’2005-7-25 22:56:32’)返回值爲 2005即2005年

判斷表存在不存在: 

  1. select   count(*)   from   sysobjects   where   type=’U’   and   name=’你的表名’   

判斷字段存在不存在: 

  1. select   count(*)   from   syscolumns  
  2. where   id       =   (select   id   from   sysobjects   where   type=’U’   and   name=’你的表名’)      
  3. and       name   =   ’你要判斷的字段名’  




//SQL當前日期獲取技巧
一個月第一天的SQL 腳本:
    

  1. SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)  



本週的星期一
    

  1. SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)  



一年的第一天
    

  1. SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)  



季度的第一天
    

  1. SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)  



當天的半夜
    

  1. SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)  



上個月的最後一天
    

  1. SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))  



去年的最後一天
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章