SQL Server 取日期時間格式 日期與字符串之間的轉換


SQL Server 取日期時間部分

 

在本文中,GetDate()獲得的日期由兩部分組成,分別是今天的日期和當時的時間: Select GetDate()  用DateName()就可以獲得相應的年、月、日,然后再把它們連接起來就可以了:

Select Datename(year,GetDate())+'-'+Datename (month,GetDate())+'-'+Datename(day,GetDate())

另外,DateName()還可以獲得到小時、時間、秒、星期幾、第幾周,分別如下:

Select Datename(hour,GetDate()) Select Datename(minute,GetDate()) Select Datename(second,GetDate()) Select Datename(weekDay,GetDate()) Select Datename(week,GetDate())

SQL中的日期類型DateTime的默認格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多數的情況我們只想得到他的日期部分,而不許要后面的時間。上一篇中提到用Datename()函數來截取拼接出不包含時間部分的日期,現在再說一種方法,更加簡單的獲取到不包含時間的日期!

使用Convert()函數:

select convert(char(10),GetDate(),120) as Date

* 第3個參數就是用來設置日期類型數據的顯示樣式的,下面介紹幾種樣式的參數:

100   mm dd yyyy

101   mm/dd/yyyy

102   yyyy.mm.dd

103   dd/mm/yyyy

106   dd mm yyyy

108   hh:mi:ss(時間)

111   yyyy/mm/dd

112   yyyymmdd

120   yyyy-mm-dd

SELECT CONVERT(varchar(100), GETDATE(), 0) 05  9 2011  9:12AM
 SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
SELECT CONVERT(varchar(100), GETDATE(), 9) 05  9 2011  9:13:14:670AM
SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11  9:15:33 AM
SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
SELECT CONVERT(varchar(100), GETDATE(), 100) 05  9 2011  9:15AM
SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
SELECT CONVERT(varchar(100), GETDATE(), 109) 05  9 2011  9:16:38:543AM
SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
SELECT CONVERT(varchar(100), GETDATE(), 130)  6 ????? ??????? 1432  9:17:19:857AM
SELECT CONVERT(varchar(100), GETDATE(), 131)  6/06/1432  9:17:19:857AM

sqlserver 日期與字符串之間的轉換

字符轉換為日期時,Style的使用

--1. Style=101時,表示日期字符串為:mm/dd/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',101) --結果:2003-11-01 00:00:00.000

--2. Style=101時,表示日期字符串為:dd/mm/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',103) --結果:2003-01-11 00:00:00.000

 

/*== 日期轉換為字符串 ==*/ DECLARE @dt datetime SET @dt='2003-1-11'

--1. Style=101時,表示將日期轉換為:mm/dd/yyyy 格式 SELECT CONVERT(varchar,@dt,101) --結果:01/11/2003

--2. Style=103時,表示將日期轉換為:dd/mm/yyyy 格式 SELECT CONVERT(varchar,@dt,103) --結果:11/01/2003

/*== 這是很多人經常犯的錯誤,對非日期型轉換使用日期的style樣式 ==*/ SELECT CONVERT(varchar,'2003-1-11',101) --結果:2003-1-11

--1. /*--說明 SET DATEFORMAT設置對使用CONVERT把字符型日期轉換為日期的處理也具有影響 但不影響明確指定了style的CONVERT處理。 --*/

--示例 ,在下面的示例中,第一個CONVERT轉換未指定style,轉換的結果受SET DATAFORMAT的影響,第二個CONVERT轉換指定了style,轉換結果受style的影響。 --設置輸入日期順序為 日/月/年 SET DATEFORMAT DMY

--不指定Style參數的CONVERT轉換將受到SET DATEFORMAT的影響 SELECT CONVERT(datetime,'2-1-2005') --結果: 2005-01-02 00:00:00.000

--指定Style參數的CONVERT轉換不受SET DATEFORMAT的影響 SELECT CONVERT(datetime,'2-1-2005',101) --結果: 2005-02-01 00:00:00.000 GO

--2. /*--說明

如果輸入的日期包含了世紀部分,則對日期進行解釋處理時 年份的解釋不受SET DATEFORMAT設置的影響。 --*/

--示例,在下面的代碼中,同樣的SET DATEFORMAT設置,輸入日期的世紀部分與不輸入日期的世紀部分,解釋的日期結果不同。 DECLARE @dt datetime

--設置SET DATEFORMAT為:月日年 SET DATEFORMAT MDY

--輸入的日期中指定世紀部分 SET @dt='01-2002-03' SELECT @dt --結果: 2002-01-03 00:00:00.000

--輸入的日期中不指定世紀部分 SET @dt='01-02-03' SELECT @dt --結果: 2003-01-02 00:00:00.000 GO

--3. /*--說明

如果輸入的日期不包含日期分隔符,那么SQL Server在對日期進行解釋時 將忽略SET DATEFORMAT的設置。 --*/

--示例,在下面的代碼中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT設置下,其解釋的結果是一樣的。 DECLARE @dt datetime

--設置SET DATEFORMAT為:月日年 SET DATEFORMAT MDY SET @dt='010203' SELECT @dt --結果: 2001-02-03 00:00:00.000

--設置SET DATEFORMAT為:日月年 SET DATEFORMAT DMY SET @dt='010203' SELECT @dt --結果: 2001-02-03 00:00:00.000

--輸入的日期中包含日期分隔符 SET @dt='01-02-03' SELECT @dt --結果: 2003-02-01 00:00:00.000

--以下示例演示了在不同的語言環境(SET LANGUAGE)下,DATENAME與CONVERT函數的不同結果。 USE master

--設置會話的語言環境為: English SET LANGUAGE N'English' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--結果: Month    Weekday   CONVERT ------------- -------------- ------------------------------- March    Tuesday   Mar 15 2005 8:59PM --*/

--設置會話的語言環境為: 簡體中文 SET LANGUAGE N'簡體中文' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--結果 Month    Weekday    CONVERT


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM