2015-01-14 17 views
5

我代替我的C#代碼與SQL查詢性能方面的原因:我如何選擇日期時間爲ddMMyy,所以是兩位數的年份?

CreatedAt.ToString("ddMMyy", System.Globalization.CultureInfo.InvariantCulture) 

返回的創建日期爲140115(今天)。在C#中足夠簡單,但我如何在T-SQL中獲得這個?

我曾嘗試:

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 103), '/', '') 

這幾乎是正確的,但一年有四個數字,而不是兩個,所以14012015而不是140115

+0

我不相信這會執行任何更好。數據類型轉換在SQL Server中也不是免費的。 –

+0

@AaronBertrand:它不是日期轉換,它是優化的一部分,但是替換了LINQ-To-SQL,其中對象包含由其他數據庫查詢初始化的複雜字段。現在我正在使用包含所有相關字段的視圖。花了20秒來選擇100行(加載100個對象),現在只有幾分之一秒。 –

+1

好的,這並不清楚,它聽起來像效率問題只是在C#中應用格式。 –

回答

8

隨着docs for CONVERT狀態,使用103如果你想在世紀3如果你不:

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 3), '/', '') 
+0

謝謝。我錯過了樹林。 –

+1

每天都在SO學習新知識。 –

3

您可以使用此也

SELECT REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 5), '-', '') 
相關問題