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

sql convert函數應用小結

編輯:MSSQL

sql convert函數應用小結。本站提示廣大學習愛好者:(sql convert函數應用小結)文章只能為提供參考,不一定能成為您想要的結果。以下是sql convert函數應用小結正文


CONVERT(data_type,expression[,style])
convert(varchar(10),字段名,轉換格局)

解釋:
此款式普通在時光類型(datetime,smalldatetime)與字符串類型(nchar,nvarchar,char,varchar)
互相轉換的時刻才用到.

語句 成果
SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM
SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09
SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15
SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09
SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09
SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09
SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09
SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09
SELECT CONVERT(varchar(100), GETDATE(), 8) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09
SELECT CONVERT(varchar(100), GETDATE(), 11) 09/07/15
SELECT CONVERT(varchar(100), GETDATE(), 12) 090715
SELECT CONVERT(varchar(100), GETDATE(), 13) 15 07 2009 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 14) 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 20) 2009-07-15 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 21) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 22) 07/15/09 4:06:26 PM
SELECT CONVERT(varchar(100), GETDATE(), 23) 2009-07-15
SELECT CONVERT(varchar(100), GETDATE(), 24) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 25) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 100) 07 15 2009 4:06PM
SELECT CONVERT(varchar(100), GETDATE(), 101) 07/15/2009
SELECT CONVERT(varchar(100), GETDATE(), 102) 2009.07.15
SELECT CONVERT(varchar(100), GETDATE(), 103) 15/07/2009
SELECT CONVERT(varchar(100), GETDATE(), 104) 15.07.2009
SELECT CONVERT(varchar(100), GETDATE(), 105) 15-07-2009
SELECT CONVERT(varchar(100), GETDATE(), 106) 15 07 2009
SELECT CONVERT(varchar(100), GETDATE(), 107) 07 15, 2009
SELECT CONVERT(varchar(100), GETDATE(), 108) 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 109) 07 15 2009 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 110) 07-15-2009
SELECT CONVERT(varchar(100), GETDATE(), 111) 2009/07/15
SELECT CONVERT(varchar(100), GETDATE(), 112) 20090715
SELECT CONVERT(varchar(100), GETDATE(), 113) 15 07 2009 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 114) 16:06:26:513
SELECT CONVERT(varchar(100), GETDATE(), 120) 2009-07-15 16:06:26
SELECT CONVERT(varchar(100), GETDATE(), 121) 2009-07-15 16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 126) 2009-07-15T16:06:26.513
SELECT CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430 4:06:26:513PM
SELECT CONVERT(varchar(100), GETDATE(), 131) 23/07/1430 4:06:26:513PM

style數字在轉換時光時的寄義以下:

------------------------------------------------------------------------------------------------------------
Style(2位表現年份)     |    Style(4位表現年份)     |     輸出輸入格局                                    
------------------------------------------------------------------------------------------------------------
0                                 | 100                             |     mon dd yyyy hh:miAM(或PM)              
------------------------------------------------------------------------------------------------------------
1                                 |    101     美國                  |     mm/dd/yy                                       
------------------------------------------------------------------------------------------------------------
2                                 |    102      ANSI                 |     yy-mm-dd                                        
------------------------------------------------------------------------------------------------------------
3                                 |    103      英法                  |     dd/mm/yy                                       
------------------------------------------------------------------------------------------------------------
4                                 |    104      德國                  |     dd.mm.yy                                        
------------------------------------------------------------------------------------------------------------
5                                 |    105      意年夜利               |     dd-mm-yy                                        
------------------------------------------------------------------------------------------------------------
6                                 |    106                              |     dd mon yy                                        
------------------------------------------------------------------------------------------------------------
7                                 |    107                              |     mon dd,yy                                        
------------------------------------------------------------------------------------------------------------
8                                 |    108                              |     hh:mm:ss                                         
------------------------------------------------------------------------------------------------------------
9                                 |    109                              |     mon dd yyyy hh:mi:ss:mmmmAM(或PM)
------------------------------------------------------------------------------------------------------------
10                               |    110      美國                   |     mm-dd-yy                                         
------------------------------------------------------------------------------------------------------------
11                               |    111      日本                   |     yy/mm/dd                                        
------------------------------------------------------------------------------------------------------------
12                               |    112      ISO                    |     yymmdd                                           
------------------------------------------------------------------------------------------------------------
13                               |    113       歐洲默許值       |     dd mon yyyy hh:mi:ss:mmm(24小時制)  
------------------------------------------------------------------------------------------------------------
14                               |    114                              |     hh:mi:ss:mmm(24小時制)                    
------------------------------------------------------------------------------------------------------------
20                               |    120       ODBC 標准       |      yyyy-mm-dd hh:mi:ss(24小時制)         
------------------------------------------------------------------------------------------------------------
21                               |     121                             |      yyyy-mm-dd hh:mi:ss:mmm(24小時制)
------------------------------------------------------------------------------------------------------------

解釋:
應用 CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

參數

expression

是任何有用的 Microsoft® SQL Server™ 表達式。。

data_type

目的體系所供給的數據類型,包含 bigint 和 sql_variant。不克不及應用用戶界說的數據類型。
length

nchar、nvarchar、char、varchar、binary 或 varbinary 數據類型的可選參數。

style

日期格局款式,借以將 datetime 或 smalldatetime 數據轉換為字符數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型);或許字符串格局款式,借以將 float、real、money 或 smallmoney 數據轉換為字符數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型)。

SQL Server 支撐應用科威特算法的阿拉伯款式中的數據格局。

在表中,左邊的兩列表現將 datetime 或 smalldatetime 轉換為字符數據的 style 值。給 style 值加 100,可取得包含世紀數位的四位年份 (yyyy)。

不帶世紀數位 (yy) 帶世紀數位 (yyyy)
尺度
輸出/輸入** - 0 或 100 (*) 默許值 mon dd yyyy hh:miAM(或 PM) 1 101 美國 mm/dd/yyyy 2 102 ANSI yy.mm.dd 3 103 英國/法國 dd/mm/yy 4 104 德國 dd.mm.yy 5 105 意年夜利 dd-mm-yy 6 106 - dd mon yy 7 107 - mon dd, yy 8 108 - hh:mm:ss - 9 或 109 (*) 默許值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 10 110 美國 mm-dd-yy 11 111 日本 yy/mm/dd 12 112 ISO yymmdd - 13 或 113 (*) 歐洲默許值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 14 114 - hh:mi:ss:mmm(24h) - 20 或 120 (*) ODBC 標准 yyyy-mm-dd hh:mm:ss[.fff] - 21 或 121 (*) ODBC 標准(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff] - 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm(不含空格) - 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM - 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM

*      默許值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)一直前往世紀數位 (yyyy)。
** 當轉換為 datetime時輸出;當轉換為字符數據時輸入。
*** 專門用於 XML。關於從 datetime或 smalldatetime 到 character 數據的轉換,輸入格局如表中所示。關於從 float、money 或 smallmoney 到 character 數據的轉換,輸入同等於 style 2。關於從 real 到 character 數據的轉換,輸入同等於 style 1。
****Hijri 是具有幾種變更情勢的日歷體系,Microsoft® SQL Server™ 2000 應用個中的科威特算法。

 

主要    默許情形下,SQL Server 依據截止年份 2049 說明兩位數字的年份。即,兩位數字的年份 49 被說明為 2049,而兩位數字的年份 50 被說明為 1950。很多客戶端運用法式(例如那些基於 OLE 主動化對象的客戶端運用法式)都應用 2030 作為截止年份。SQL Server 供給一個設置裝備擺設選項("兩位數字的截止年份"),借以更改 SQL Server 所應用的截止年份並對日期停止分歧性處置。但是最平安的方法是指定四位數字年份。

當從 smalldatetime 轉換為字符數據時,包括秒或毫秒的款式將在這些地位上顯示零。當從 datetime 或 smalldatetime 值停止轉換時,可以經由過程應用恰當的 char 或 varchar 數據類型長度來截斷不須要的日期部門。

PS:聯合datediff()函數用來比擬時光特殊有效。

-------------------------------------------------------------------------------------------------------------------------------------------

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)
,以後時光=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