2012-04-02 75 views
-3

我需要讓我的日期是到以下格式:SQL日期格式轉換疑問句

12/3/2011例如,而不是12/03/2011

我目前的結果集使用SQL是:

CONVERT(VARCHAR(10), Created, 105) as Created 

我怎麼能做到這一點,謝謝!

+4

那是MM/d/yyyy或DD/M/yyyy的? – 2012-04-02 15:23:25

+0

日期格式105是DD/MM/YYYY(意大利風格)。因此海報想要D/M/Y。 – 2012-04-02 15:51:38

+0

雖然問題突出了使用模糊格式的問題。對於* MOST *觀衆,明確的輸出格式更好,例如, 'YYYY-MM-DD'。 – 2012-04-02 15:54:58

回答

1

CONVERT(CHAR(10), '\'),CONVERT(DATETIME,創建),103)

0

添加替換「/ 0」與「/」,然後檢查是否LEFT或第一個字符是0

+0

**可以讓一些單詞不是粗體** – JNK 2012-04-02 15:24:15

+0

查詢的外觀如何? – bobo2000 2012-04-02 15:25:43

+0

大膽只是一個意外..... – 2012-04-02 16:00:55

0

有一個更好的建議。我想補充的格式功能監守你問的是一個有點少見,

http://www.sqlusa.com/bestpractices2005/centurydateformat/

退房的fnFormatDate。然後你可以用任何你想要的格式對其進行格式化,但它可能/不可能是內聯的,你想用語句

REPLACE(CONVERT(VARCHAR(10),Created,105),'\ 0'爲創建

4

在SQL Server中沒有標準的日期格式返回數天或數個月的個位數。您可以使用月,日和YEAR功能

-- M/D/Y format (USA) 
SELECT CAST(MONTH(@date) AS varchar(2)) + '/' 
     + CAST(DAY(@date) AS varchar(2)) + '/' 
     + CAST(YEAR(@date) AS varchar(4)) 

-- D/M/Y format (everywhere else) 
SELECT CAST(DAY(@date) AS varchar(2)) + '/' 
     + CAST(MONTH(@date) AS varchar(2)) + '/' 
     + CAST(YEAR(@date) AS varchar(4)) 
1

所有這些方法可能會影響性能,如果這是對一個列滾你自己。由於C#和許多其他客戶端語言在格式化日期等功能時具有更靈活的功能,因此您應該在客戶端層應用此格式。在那裏,大概你會循環所有的行,並在你顯示它們的時候單獨處理值。

+0

保留數據作爲數據。比較容易,做數學等。格式化字符串絕對是一種表示層功能。 – Bill 2012-04-02 15:51:40