2011-08-30 68 views
4

我有一個名爲SF_Data表並有一個稱爲IN_Date柱,ID數據的模樣:轉換爲毫米/ dd/yyyy格式

ID  IN_Date 
1  9/8/2010 
2  26/04/2011 
3  20/09/2010 

IN_Date的datatatype爲varchar(50)。

我想將IN_Date轉換爲mm/dd/yyyy格式。我試圖這樣做:

Select convert(varchar,IN_Date,103) From dbo.SF_Data 

但仍然格式不會改變。誰能告訴我哪裏出問題了

+1

如果它是一個日期 - 爲什麼不是'DATETIME'? ?這會讓事情變得簡單得多!** –

+1

爲什麼它是varchar(50)? – gbn

+0

@GBN該表由其他人創建 – Peter

回答

7

你需要一個轉換來修正數據(正確的數據類型)格式化之前...

Select 
    convert(varchar, 
     convert(date, IN_Date, 103), 
    101) 
from dbo.SF_Data 
+0

它給我出現下面的錯誤Msg 102,Level 15,State 1,Line 1 '101 」。 – Peter

+1

@Peter - 只是缺少一個逗號,修正了它 –

+0

@Peter:Joel修正了我的語法,錯過了逗號。哎呀。 – gbn

1

當從varchar轉換爲varchar時,convert的第三個參數沒有意義。所以每@marc_s'註釋,你必須使用103格式varchar轉換爲datetime,然後從datetimevarchar指定101格式:

Select convert(varchar(12),convert(datetime,IN_Date,103),101) From dbo.SF_Data 

例如:

select convert(varchar(12),convert(datetime,'31/12/2001',103),101) 

打印12/31/2001

See MSDN.

+1

是的 - 但它是一個VARCHAR開始 - 它需要首先轉換爲DATETIME,然後返回到VARCHAR(in一個不同的格式) –

+0

你的意思是_mm/dd/yyyy _... – canon

+0

@Andomar我也試過101但是沒有工作 – Peter