1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    SQLServer 日期函數大全(小結)_MsSql

    來源:腳本之家  責任編輯:小易  

    一、統計語句

    1、--統計當前【>當天00點以后的數據】

    SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111)   ORDER BY dateandtime DESC
    

    2、--統計本周

    SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0
    

    3、--統計本月

    SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0
    

    4、統計當前

    SELECT * FROM 表 WHERE datediff(day,[dateadd],getdate())=0
    Select * From table with(nolock) Where Convert(varchar(10),[CreateTime],120) = Convert(varchar(10),getDate(),120)
    

    二、時間函數

    1、當前系統日期、時間

    select getdate() 
    

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

    select dateadd(day,2,'2004-10-15')   --返回:2004-10-17 00:00:00.000
    

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

    select datediff(day,'2004-09-01','2004-09-18')    --返回:17
    

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

    SELECT DATEPART(month, '2004-10-15')   --返回 10
    

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

    SELECT datename(weekday, '2004-10-15')   --返回:星期五
    

    6、day(), month(),year() --可以與datepart對照一下

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

    7、求相差天數

    select   datediff(day,'2004-01-01',getdate()) 
    

    8、一個月第一天的

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

    9、本周的星期一

    SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),   0)  
    select   dateadd(wk,datediff(wk,0,getdate()),6)  
    

    10、一年的第一天

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

    11、季度的第一天

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

    12、當天的半夜

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

    13、上個月的最后一天

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

    14、去年的最后一天

    SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)) 
    

    15、本月的最后一天

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

    16、本年的最后一天

    SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate())+1,   0))
    

    17、本月的第一個星期一

    select   DATEADD(wk,  DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),   0)
    

    18、查詢本周注冊人數

    select   count(*)   from   [user]  
    where   datediff(week,create_day-1,getdate())=0 
    

    19、上周注冊人數

    select   count(*)   from   [user]  
    where   datediff(week,create_day-1,getdate())=1
    

    20、本月注冊人數

    select   count(*)   from   [user]  
    where   datediff(month,create_day,getdate())=0 
    

    21、上月注冊人數

    select   count(*)   from   [user]  
    where   datediff(month,create_day,getdate())=1
    

    如果要效率,用一下方式

    22、查詢本周注冊人數

    select   count(*)   from   [user]  
    where   create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))  
    and   create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112)) 
    

    23、上周注冊人數

    select   count(*)   from   [user]  
    where   create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112))  
    and   create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112)) 
    

    24、本月注冊人數

    select   count(*)   from   [user]  
    where   create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))  
    and   create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))
    

    25、上月注冊人數

    select   count(*)   from   [user]  
    where   create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))  
    and   create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)) 
    

    26、本周

    select   count(*)   from   User  
    where   datediff(dd,create_day,getdate())   <=   datepart(dw,getdate()) 
    

    27、上周

    select   count(*)   from   User  
    where   datediff(dd,create_day,(getdate()   -   datepart(dw,getdate())))   <=   7
    

    28、本月

    select   count(*)   from   User  
    where   datepart(mm,create_day)   =   datepart(mm,getdate())

    29、上月

    select   count(*)   from   User  
    where   datepart(mm,create_day)   =   datepart(mm,getdate())   -   1
    

    30、本周注冊人數

    select   count(*)   from   [User]  
    where   datediff(dd,create_day,getdate())   <=   datepart(dw,getdate()) 
    

    31、上周注冊人數

    select   count(*)   from   [User]  
    where   datediff(dd,create_day,(getdate()   -   datepart(dw,getdate())))   <=   7

    32、本月注冊人數

    select   count(*)   from   [User]  
    where   datepart(mm,create_day)   =   datepart(mm,getdate())
    

    33、上月注冊人數

    select   count(*)   from   [User]  
    where   datepart(mm,create_day)   =   datepart(mm,getdate())   -   1

    34、查詢今日所有

    SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC
    month(create_day)=month(getdate())本月  
    
    month(create_day)=month(getdate())-1   上月
    
    

    今天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=0

    昨天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=1

    7天內的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())<=7

    30天內的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())<=30

    本月的所有數據:select * from 表名 where DateDiff(mm,datetime類型字段,getdate())=0

    本年的所有數據:select * from 表名 where DateDiff(yy,datetime類型字段,getdate())=0

    系統函數:

    函數 參數/功能
    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年

    Sql 取當天或當月的記錄
    表中的時間格式是這樣的:2007-02-02 16:50:08.050, 如果直接和當天的時間比較,就總得不到準確數據,但是我們可以把這種格式的時間[格式化]成 2007-02-02,也就是只有年-月-日,然后把當天的時間也格式化成 年-月-日的格式.
    這樣,思路就出來了!
    我們格式化日期要用到 Convert()這個函數,要用到3個參數,首先來格式化當天的日期,Convert(varchar(10),getDate(),120)
    這樣我們就可以把當天的日期格式化為: 2007-2-2,然后格式化數據庫表中的日期
    Convert(varchar(10),TimeFiled,120),最后我們就可以用一條Sql語句得到當天的數據了.
    例如:

    Select * From VIEW_CountBill Where Convert(varchar(10),[time],120) = Convert(varchar(10),getDate(),120)
    

    注意:
    Convert()函數中的各個參數的意義,第一個參數,varchar(10)是目標系統所提供的數據類型,包括 bigint 和 sql_variant。不能使用用戶定義的數據類型。第二個參數是你要轉換的字段,我這里是[time]。最后一個就是格式了,這個值是可選的:20或者120都可以,它遵循的是[ODBC 規范],輸入/輸出樣式為:yyyy-mm-dd hh:mm:ss[.fff]
    具體的可以參考Sql Server的聯機幫助!

    ======================================================

    T-Sql查找表中當月的記錄

    思路:將要查找的時間字段用Month()函數取出其中的月份,然后再取出當前月的月份,對比就OK了
    例:

    Select * From VIEW_CountBill Where Month([time]) = Month(getDate())
    

    今天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=0

    昨天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=1

    7天內的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())<=7

    30天內的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())<=30

    本月的所有數據:select * from 表名 where DateDiff(mm,datetime類型字段,getdate())=0

    本年的所有數據:select * from 表名 where DateDiff(yy,datetime類型字段,getdate())=0

    查詢今天是今年的第幾天: select datepart(dayofyear,getDate())

    查詢今天是本月的第幾天:1. select datepart(dd, getDate())

                                                    2.select day(getDate())

    查詢本周的星期一日期是多少 (注意:指定日期不能是周日,如果是周日會計算到下周一去。所以如果是周日要減一天) SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)

    查詢昨天日期:select convert(char,dateadd(DD,-1,getdate()),111)  //111是樣式號,(100-114) 

    查詢本月第一天日期:Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) as firstday

    查詢本月最后一天日期:Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) as lastday      //修改-3的值會有相應的變化 

    本月有多少天:select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast((cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' ) as datetime ))))

    求兩個時間段相差幾天:select datediff(day,'2012/8/1','2012/8/20') as daysum

    在指定的日期上±N天:select convert(char,dateadd(dd,1,'2012/8/20'),111) as riqi    //輸出2012/8/21

    在指定的日期上±N分鐘:select dateadd(mi,-15,getdate())  //查詢當前時間15分鐘之前的日期

    指定時間 : select  * from 表名 where 時間字段 >= to_date('yyyy-MM-dd','1900-01-01');

    今天

    select * from 表名 where to_days(時間字段名) = to_days(now());
    

    昨天

    SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 時間字段名) <= 1
    

    近7天

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間字段名)
    

    近30天

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間字段名)
    

    本月

    SELECT * FROM 表名 WHERE DATE_FORMAT( 時間字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
    

    上一月

    SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 時間字段名, '%Y%m' ) ) =1
    

    查詢本季度數據

    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());
    

    查詢上季度數據

    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
    

    查詢本年數據

    select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());
    

    查詢上年數據

    select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

    查詢當前這周的數據

    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());
    

    查詢上周的數據

    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;
    

    查詢上個月的數據

    select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
    
    select * from user where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; 
    
    select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now()) 
    
    select * from user where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 
    
    select * from user where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now()) and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 
    
    select * from user where pudate between  上月最后一天  and 下月第一天 
    
    

    查詢當前月份的數據

    select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')
    

    查詢距離當前現在6個月的數據

    select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();
    

    查詢時間區間:

    select * from  表   WHERE 時間字段 > '2018-12-11 13:36:31'  and  時間字段  <= '2019-01-09 13:36:31'

    到此這篇關于SQLServer 日期函數大全(小結)的文章就介紹到這了,更多相關SQLServer 日期函數內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

    您可能感興趣的文章:SQL SERVER中常用日期函數的具體使用SQL Server 日期函數CAST 和 CONVERT 以及在業務中的使用介紹

  3. 本文相關:
  4. sql server2014 哈希索引原理詳解
  5. sql server控制語句的基本應用
  6. 拯救你的數據 通過日志恢復mssql數據
  7. sqlserver表死鎖的解決方法分享
  8. 附加到sql2012的數據庫就不能再附加到低于sql2012的數據庫版本的
  9. sqlserver 實現收縮數據庫日志操作
  10. 詳解將datagrip連接到ms sql server的方法
  11. 數據庫高并發情況下重復值寫入的避免 字段組合約束
  12. 使用sqlserver存儲過程sp_send_dbmail發送郵件配置方法(圖文)
  13. sql2000中的默認sa帳號的修改與刪除方法
  14. 關于sqlserver日期函數
  15. sqlServer日期函數轉換成短日期
  16. SqlServer時間函數
  17. sqlserver里,日期類型截掉時間部分使用什么函數效...
  18. sqlserver截取日期的年份和月份
  19. 從sqlserver數據庫中提取日期,并把年月日分別截取...
  20. MSSQL時間函數(把日取一個固定值,年月為當前時間)
  21. sqlserver 存儲過程要傳時間的值 我要取1年的數據 ...
  22. sqlserver數據庫插入操作問題,用日期函數取得年月...
  23. sqlserver日期計算的問題
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁sql server中常用日期函數的具體使用sql server 日期函數cast 和 convert 以及在業務中的使用介紹sql server控制語句的基本應用拯救你的數據 通過日志恢復mssql數據sqlserver表死鎖的解決方法分享附加到sql2012的數據庫就不能再附加到低于sql2012的數據庫版本的sqlserver 實現收縮數據庫日志操作詳解將datagrip連接到ms sql server的方法數據庫高并發情況下重復值寫入的避免 字段組合約束使用sqlserver存儲過程sp_send_dbmail發送郵件配置方法(圖文)sql2000中的默認sa帳號的修改與刪除方法sql server 2012 安裝圖解教程(附sql server數據庫入門學習總結microsoft sql server 2012 數據win7系統安裝sqlserver2000的詳細sql重復記錄查詢的幾種方法sqlserver中distinct的用法(不重sql server錯誤代碼大全及解釋(sql-order by 多字段排序(升序、sql將一個表中的數據插入到另一個用sql語句添加刪除修改字段、一些sql server 2008 正式版安裝指南 包含序列在sql server中導致索引查找變成索引掃描系統隱形殺手——阻塞與等待(sql)命令行啟動mssqlserver服務的方法示例row_number sql server 2005的limit功能實在程序中壓縮sql server2000的數據庫備份sql 研究 相似的數據類型sql server中使用linkserver連接oracle的一條select語句引起的瓶頸問題思考mssql2005,2008導出數據字典實現方法
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载