程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql 時光函數 整頓的比擬全了

sql 時光函數 整頓的比擬全了

編輯:MSSQL

sql 時光函數 整頓的比擬全了。本站提示廣大學習愛好者:(sql 時光函數 整頓的比擬全了)文章只能為提供參考,不一定能成為您想要的結果。以下是sql 時光函數 整頓的比擬全了正文


1. 以後體系日期、時光
select getdate()
2. dateadd 在向指定日期加上一段時光的基本上,前往新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --前往:2004-10-17 00:00:00.000

例如:查詢今朝時光比來三天的內容降序分列
select * from table where time between dateadd(day,-3,getdate()) and getdate() order by c_Id desc

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)
,以後時光=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 今年第若干周=datename(week,'2004-10-15')
,明天是周幾=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年
SQL Server DATEPART() 函數前往 SQLServer datetime 字段的一部門。
SQL Server DATEPART() 函數的語法是:
DATEPART(portion, datetime)
個中 datetime 是 SQLServer datetime 字段和部門的稱號是以下之一: Ms for Milliseconds
Yy for Year
Qq for Quarter of the Year
Mm for Month
Dy for the Day of the Year
Dd for Day of the Month
Wk for Week
Dw for the Day of the Week
Hh for Hour
Mi for Minute
Ss for Second
具體的解釋:
通 常,你須要取得以後日期和盤算一些其他的日期,例如,你的法式能夠須要斷定一個月的第一天或許最初一天。你們年夜部門人年夜概都曉得如何把日期停止朋分(年、 月、日等),然後僅僅用朋分出來的年、月、日等放在幾個函數上鉤算出本身所須要的日期!在這篇文章裡,我將告知你若何應用DATEADD和 DATEDIFF函數來盤算出在你的法式中能夠你要用到的一些分歧日期。
在應用本文中的例子之前,你 必需留意以下的成績。年夜部門能夠不是一切例子在分歧的機械上履行的成果能夠紛歧樣,這完整由哪一天是一個禮拜的第一天這個設置決議。第一天 (DATEFIRST)設定決議了你的體系應用哪一天作為一周的第一天。一切以下的例子都是以禮拜天作為一周的第一天來樹立,也就是第一天設置為7。假設你的第一天設置紛歧樣,你能夠須要調劑這些例子,使它和分歧的第一天設置符合合。你可以經由過程@@DATEFIRST函數來檢討第一天設置。
為 了懂得這些例子,我們先溫習一下DATEDIFF和DATEADD函數。DATEDIFF函數盤算兩個日期之間的小時、天、周、月、年等時光距離總數。 DATEADD函數盤算一個日期經由過程給時光距離加減來取得一個新的日期。要懂得更多的DATEDIFF和DATEADD函數和時光距離可以浏覽微軟聯機 贊助。
應用DATEDIFF和DATEADD函數來盤算日期,和原來從以後日期轉換到你須要的日期的斟酌辦法有點分歧。你必需從時光距離這個方面來斟酌。好比,從以後日期到你要獲得的日期之間有若干時光距離,或許,從明天到某一天(好比1900-1-1)之間有若干時光距離,等等。懂得如何著眼於時光距離有助於你輕松的懂得我的分歧的日期盤算例子。
一個月的第一天
第一個例子,我將告知你若何從以後日期去這個月的最初一天。請留意:這個例子和這篇文章中的其他例子都將只應用DATEDIFF和DATEADD函數來盤算我們想要的日期。每個例子都將經由過程盤算但前的時光距離,然落後行加減來獲得想要盤算的日期。
這是盤算一個月第一天的SQL 劇本:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
我們把這個語句離開來看看它是若何任務的。最焦點的函數是getdate(),年夜部門人都曉得這個是前往以後的日期和時光的函數。下一個履行的函數DATEDIFF(mm,0,getdate())是盤算以後日期和“1900-01-01 00:00:00.000”這個日期之間的月數。記住:時代和時光變量和毫秒一樣是從“1900-01-01 00:00:00.000”開端盤算的。這就是為何你可以在DATEDIFF函數中指定第一個時光表達式為“0”。下一個函數是DATEADD,增長以後日期到“1900-01-01”的月數。經由過程增長預界說的日期“1900-01-01”和以後日期的月數,我們可以取得這個月的第一天。別的,盤算出來的日期的時光部門將會是“00:00:00.000”。
這個盤算的技能是先盤算以後日期到“1900-01-01”的時光距離數,然後把它加到“1900-01-01”下去取得特別的日期,這個技能可以用來盤算許多分歧的日期。下一個例子也是用這個技能從以後日期來發生分歧的日期。

本周的禮拜一
這裡我是用周(wk)的時光距離來盤算哪一天是本周的禮拜一。
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
一年的第一天
如今用年(yy)的時光距離來顯示這一年的第一天。
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
季度的第一天
假設你要盤算這個季度的第一天,這個例子告知你該若何做。
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
當天的子夜
已經須要經由過程getdate()函數為了前往時光值截失落時光部門,就會斟酌到以後日期是否是在子夜。假設如許,這個例子應用DATEDIFF和DATEADD函數來取得子夜的時光點。
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
深刻DATEDIFF和DATEADD函數盤算
你可以明確,經由過程應用簡略的DATEDIFF和DATEADD函數盤算,你可以發明許多分歧的能夠成心義的日期。
今朝為止的一切例子只是僅僅盤算以後的時光和“1900-01-01”之間的時光距離數目,然後把它加到“1900-01-01”的時光距離下去盤算出日期。假定你修正時光距離的數目,或許應用分歧的時光距離來挪用DATEADD函數,或許減去時光距離而不是增長,那末經由過程這些小的調劑你可以發明和多分歧的日期。
這裡有四個例子應用別的一個DATEADD函數來盤算最初一天來分離調換DATEADD函數前後兩個時光距離。
上個月的最初一天
這是一個盤算上個月最初一天的例子。它經由過程從一個月的最初一天這個例子上減去3毫秒來取得。有一點要記住,在Sql Server中時光是准確到3毫秒。這就是為何我須要減去3毫秒來取得我要的日期和時光。
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
盤算出來的日期的時光部門包括了一個Sql Server可以記載的一天的最初時辰(“23:59:59:997”)的時光。
客歲的最初一天
銜接下面的例子,為了要獲得客歲的最初一天,你須要在本年的第一天上減去3毫秒。
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
本月的最初一天
如今,為了取得本月的最初一天,我須要略微修正一下取得上個月的最初一天的語句。修正須要給用DATEDIFF比擬以後日期和“1900-01-01”前往的時光距離上加1。經由過程加1個月,我盤算出下個月的第一天,然後減去3毫秒,如許就盤算出了這個月的最初一天。這是盤算本月最初一天的SQL劇本。
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
今年的最初一天
你如今應當控制這個的做法,這是盤算今年最初一天劇本
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
本月的第一個禮拜一
好了,如今是最初一個例子。這裡我要盤算這個月的第一個禮拜一。這是盤算的劇本。
select DATEADD(wk, DATEDIFF(wk,0,
dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
在這個例子裡,我應用了“本周的禮拜一”的
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved