2013-09-26 60 views
1

我以字符串格式11-09-2013dd-mm-yyyy格式從JSP傳遞日期。我的查詢是:將dd-mm-yyyy字符串轉換爲日期

select convert(varchar(10),'11-09-2013',106) 

但它不給我預期的輸出,這就是:

11-SEP-2013 
+1

爲什麼不通過一個標準的格式,如從JSP的yyyymmdd?或者只是傳遞一個日期而不是一個字符串? –

+0

最好避免使用'dd-mm-yyyy'格式,並選擇更通用的'yyyymmdd' – whytheq

回答

0
DECLARE @d CHAR(10) = '11-09-2013'; -- dd-mm-yyyy 

SELECT UPPER(REPLACE(CONVERT(CHAR(11), CONVERT(DATETIME, @d, 103), 106), ' ', '-')); 

-- if 2008+ you can use DATE instead: 
SELECT UPPER(REPLACE(CONVERT(CHAR(11), CONVERT(DATE, @d, 103), 106), ' ', '-')); 

-- if 2012 you can use: 
SELECT UPPER(FORMAT(CONVERT(DATE, @d, 103), 'dd-MMM-yyyy')); 

導致所有三種情況:

11-SEP-2013 

然而,這轉換爲字符串等非常昂貴。爲什麼你需要這種輸出格式,它到底在哪裏?如果這是在客戶端展示的,那麼在客戶端使用字符串格式化功能會更好。