小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

{ DATEADD與DATEDIFF}SQL SERVER 2005中如何獲取日期(一個月的最后一日、一年的第一日 )

 zww_blog 2012-03-14
 
一:所規(guī)定的每周第一天

      1.1 @@DATEFIRST

返回 SET DATEFIRST 參數(shù)的當(dāng)前值,SET DATEFIRST 參數(shù)指明所規(guī)定的每周第一天:1 對應(yīng)星期一,2 對應(yīng)星期二,依次類推,用 7 對應(yīng)星期日。美國英語中默認(rèn) 7 對應(yīng)星期日。

1.2 查詢當(dāng)前系統(tǒng)所規(guī)定的每周第一天

SELECT @@DATEFIRST AS '1st Day'

1.3 設(shè)置當(dāng)前系統(tǒng)所規(guī)定的每周第一天(例子為設(shè)置星期日為每周第一天)

 SET DATEFIRST 7
二:計算兩個日期之間的小時、天、周、月、年等時間間隔總數(shù)。

2.1 DATEDIFF

返回跨兩個指定日期的日期和時間邊界數(shù)。 
       2.2 語法
       DATEDIFF ( datepart , startdate , enddate )

2.3 參考

下表列出了 Microsoft? SQL Server? 識別的日期部分和縮寫。

日期部分 縮寫 
year yy, yyyy 
quarter qq, q 
Month mm, m 
dayofyear dy, y 
Day dd, d 
Week wk, ww 
Hour hh 
minute mi, n 
second ss, s 
millisecond ms 

三:計算一個日期通過給時間間隔加減來獲得一個新的日期。 
 

3.1 DATEADD

在向指定日期加上一段時間的基礎(chǔ)上,返回新的 datetime 值。
      3.2 語法
        DATEADD ( datepart , number, date )

3.3 參考

下表列出了 Microsoft? SQL Server? 識別的日期部分和縮寫。

 

日期部分 縮寫 
year yy, yyyy 
quarter qq, q 
Month mm, m 
dayofyear dy, y 
Day dd, d 
Week wk, ww 
Hour hh 
minute mi, n 
second ss, s 
millisecond ms
 

 


四:時期和時間變量和毫秒一樣是從“1900-01-01 00:00:00.000”開始計算的

五:在Sql Server中時間是精確到3毫秒

六:好用的例子

6.1計算一個月第一天的SQL 腳本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

6.2一年的第一天的SQL 腳本:SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

6.3本周的星期一的SQL 腳本: SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

6.4 季度的第一天的SQL 腳本:SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)  
6.5當(dāng)天的半夜的SQL 腳本:SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 

6.6上個月的最后一天的SQL 腳本:SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 

6.7去年的最后一天的SQL 腳本:SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 

6.8本月的最后一天的SQL 腳本:   SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))    

6.9 本年的最后一天的SQL 腳本: SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

6.10本月的第一個星期一的SQL 腳本:select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 


 

七:其他日期處理方法

1)去掉時分秒 
declare @ datetime 
set @ = getdate() --'2003-7-1 10:00:00' 
SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)

2)顯示星期幾 
select datename(weekday,getdate())   

3)如何取得某個月的天數(shù) 
declare @m int 
set @m=2 --月份 
select    datediff(day,'2003-'+cast(@m as varchar)+'-15' ,'2003-'+cast(@m+1    as varchar)+'-15') 
另外,取得本月天數(shù) 
select    datediff(day,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate()) as varchar)+'-15' ,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate())+1    as varchar)+'-15') 
或者使用計算本月的最后一天的腳本,然后用DAY函數(shù)區(qū)最后一天 
SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))

4)判斷是否閏年: 
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '閏年' end 
或者 
select case datediff(day,datename(year,getdate())+'-02-01',dateadd(mm,1,datename(year,getdate())+'-02-01')) 
when 28 then '平年' else '閏年' end

5)一個季度多少天 
declare @m tinyint,@time smalldatetime 
select @m=month(getdate()) 
select @m=case when @m between 1 and 3 then 1 
                       when @m between 4 and 6 then 4 
                       when @m between 7 and 9 then 7 
                       else 10 end 
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01' 
select datediff(day,@time,dateadd(mm,3,@time))





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多