我有一個SQL查詢將日期時間轉換爲106格式,之後我將空白空間替換爲-
,這需要花費太多時間將近4分鐘執行。舉例如下爲什麼REPLACE查詢在SQL Server 2008中花費很多時間
REPLACE(CONVERT(VARCHAR,GETDATE(),106),' ','-') DDate
輸出19月 - 2015年
沒有取代我的查詢花費0秒
是否有任何其他方式來獲得自定義格式的日期如上所述? 我明白REPLACE
會比較結果項目的集合。 但它不應該花4分鐘來取代100到200的數據。
有什麼想法?
查詢作爲
SELECT TOP(ISNULL(100,'10000'))
FD.Flight 'Select'
,FD.Filename
,ISNULL(FD.RefNo, 'FLT-' + CONVERT(VARCHAR, FD.FLID)) 'FlightID'
,FD.Registration
,ISNULL(FD.FlightNumber, '') FlightNumber
**,REPLACE(CONVERT(VARCHAR,FD.TKD,106),' ','-') TODate**
,FD.TOGMT
**,REPLACE(CONVERT(VARCHAR,FD.LKD,106),' ','-') LDDate**
,FD.LDGMT
,FD.Origin
,FD.Destination
,FD.Pilot
,FD.CoPilot
**,REPLACE(CONVERT(VARCHAR,FD.DumpDate,106),' ','-') DDate**
,FD.UserName
,FD.FlightCount
,FD.AcVariation
FROM
dbo.vw_FlightDetails FD
LEFT JOIN [dbo].FlightRemark RM ON RM.FlightID = FD.FLID
WHERE
1=1
ORDER BY
FD.TKD DESC
,FD.TOGMT DESC
大膽區是我面臨的
哪個版本的sql server?因爲Sql Server 2012及以上版本有'FORMAT'功能。 – 2015-04-01 07:04:38
我懷疑這是由replace()調用引起的。您必須向我們展示* complete *查詢 - 理想情況下,包括所有涉及到create table語句的表的定義以及執行計劃是否帶有replace()調用。 – 2015-04-01 07:06:29
我不認爲這是由替換 – 2015-04-01 07:10:17