2017-05-27 278 views
1

將DateTime轉換爲其他格式的現有SQL語句已運行很長一段時間,但現在在查詢執行後僅幾秒鐘就會給出「查詢超時已過期」錯誤。SQL轉換日期時間

SQL = "SELECT top 1000000 CONVERT(VARCHAR(10),TimeStamp,101) + ' ' + 
     CONVERT(CHAR(8),(CONVERT(DATETIME,TimeStamp,113)),114), 
     LogicName, PointValue FROM Trends order by LogicName" 

原始日期時間是這樣的:3/21/2017 6:53:00 PM

期望甲酸是:03/21/2017 18:53:00

是否有其他/更好的方式來達到預期的效果?

+1

請提供查詢中使用的表格字段的數據類型。 – STLDeveloper

+0

你在哪裏執行查詢?你的連接字符串是什麼? (請不要輸入密碼)最近有什麼變化? –

+0

嘗試使用「top 10」運行查詢?那個時間呢? –

回答

0

我認爲它與「連接超時」在連接字符串的配置有關。嘗試將連接超時參數值設置爲大於當前值。 (嘗試將該值設爲60並檢查)。 您的查詢 -

SELECT TOP 1000000 CONVERT(VARCHAR(10), GETDATE(), 101) + ' ' + 
CONVERT(VARCHAR(8), GETDATE(), 114) AS [Date & Time] 
    ,LogicName 
    ,PointValue 
FROM Trends 
ORDER BY LogicName 
0

百萬日期時間到varchar轉換將需要一段時間。首先,考慮客戶端應用程序是否可以根據需要處理格式,而不是格式化查詢中的所有百萬條記錄。

如果查詢必須在指定的格式提供時間戳值,那麼,對於性能,您可能希望只計算列添加到該格式存儲的時間戳值,像這樣的表:

ALTER TABLE Trends 
ADD TimeStampFormatted AS FORMAT(TimeStamp, 'MM/dd/yyyy HH:mm:ss') 

然後用這個查詢:

SELECT top 1000000 TimeStampFormatted, LogicName, PointValue 
FROM Trends order by LogicName 

這將是更快,但它會需要更多的存儲,並複製數據,但如果檢索的速度是最重要的因素,這是一個不錯的選擇。