sqlserver 日期與字串之間的轉換

來源:互聯網
上載者:User

標籤:nbsp   代碼   忽略   函數   log   taf   name   body   master   

字元轉換為日期時,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

sqlserver 日期與字串之間的轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.