SET DATEFORMAT對日期處理的影響

--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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章