2013-05-10 116 views
-1

查詢CONVERT()中的第三個參數是做什麼的?

獲取加入年,加入月和員工表

加入日期這是我的查詢,我必須執行。爲此,我寫了下面的腳本:

select 
    SUBSTRING (convert(varchar,joining_date,103),7,4) , 
    SUBSTRING (convert(varchar,joining_date,100),1,3) , 
    SUBSTRING (convert(varchar,joining_date,100),5,2) 
from 
    EMPLOYEE 

結果爲:http://d.pr/i/vObI

但是,當我改變convert(varchar,joining_date,100)convert(varchar,joining_date,101)

結果是這樣的:http://d.pr/i/G5fZ

誰能請解釋一下這個參數是指?

+1

如果您的谷歌「* sql服務器轉換*」,前三個條目詳細解釋這一點。 – RBarryYoung 2013-05-10 13:45:44

+0

微軟已精心提供了[文檔](http://msdn.microsoft.com/en-us/library/ms187928(v=sql.105).aspx)來準確解釋「CONVERT」 - 以及其他所有[built-在函數中](http://msdn.microsoft.com/en-us/library/ms174318(v = sql.105).aspx) - 確實包括每個參數的含義。 – Pondlife 2013-05-10 14:05:18

回答

0

有幾種不同的方式可以使用convert(varchar...格式化日期。這些在MSDN sitedifferent sites online上有詳細記錄。

使用convert(varchar..., date, 100)地方的日期格式爲:

mon dd yyyy hh:mmAM (or PM) 
May 10 2013 12:55PM 

使用convert(varchar...date, 101)把日期格式:

mm/dd/yyyy 
05/10/2013 

Demo

每當你實現這些我的建議是轉換,請務必在varchar(10)等上給予長度。

基於什麼樣子你是返回,可以消除一些你正在使用和實施一些其他的功能,以獲得相同的結果convert/substring聲明:

select year(joining_date) as [year] , 
    convert(varchar(3),joining_date,100) as [month] , 
    day(joining_date) as [day] 
from EMPLOYEE 
0

我覺得這是一個更好的辦法來分割和使用DATEPART得到的日期時間部分:

select DATEPART(YEAR, [joining_date]), 
    DATEPART(MONTH, [joining_date]), 
    DATEPART(DAY, [joining_date]) from EMPLOYEE 

,或者如果你有興趣,例如在名稱中使用DATENAME:

select DATEPART(YEAR, [joining_date]), 
DATENAME(MONTH, [joining_date]), 
DATEPART(DAY, [joining_date]) from EMPLOYEE 

但是根據DATENAME的MSDN:「返回值取決於使用SET LANGUAGE設置的語言環境」。

關於您的第一個問題 - 這些參數基本上是樣式,或者我將它們稱爲區域特定代碼,如上所述,您可以針對數據庫運行不同的查詢,然後您將看到返回的字符串 - 你會得到意想不到的結欲瞭解更多信息請參考MSDN: CAST and CONVERT

相關問題