2013-06-28 30 views
-1

我目前使用的是SQL Server Management Studio 2008,並且該數據庫很早以前就已創建。創建它的人將Date作爲數字值,同時也表示GMT時間比實際時間提前4小時,因此在查詢中強制使用-4小時函數。我感興趣的僅僅是在4小時轉換後的當天前4天的日期和時間格式正確的數據。將數字日期列轉換爲SQL中的日期和時間

列: 日期(數字(17,9),NOT NULL) PARMS(爲nvarchar(2000),NULL) ...等

Right now my query is: 
    ----- 
    SELECT ItemId, DATE, 
    SUBSTRING(Parms,1,6) +' Was removed from:' AS RemovalPath, 
    [OBJECT] AS [MOVE LIST] 
    FROM JnlList 
    where UserCode = 'Automation' AND ListType = 'M' 
    Order by Date DESC, RemovalPath DESC; 
    ----- 
    1 sample row output for my query out of 385 rows is: 
    ----- 
    ItemId: 9393 
    Date: 20130627.180846113 
    RemovalPath: V77963 Was Removed From: 
    MOVE LIST: M-002411 
    ----- 
    REQUIRED OUTPUT: 
    ItemId: 9393 
    Date: 2013-06-27 
    Time: 2:08:46 
    RemovalPath: V77963 Was Removed From: 
    MOVE LIST: M-002411 
    ----- 

任何人都可以做出改變,以我的查詢獲得所需的輸出?這將不勝感激。

+0

這個問題是不是由這一個有什麼不同:http://stackoverflow.com/questions/17368654/altering-data -display-在-SQL查詢? – Lamak

+0

@Lamak是的,我已經解決了列問題,所以我想刪除前一個問題,併發佈一個只涉及日期的新問題。 –

回答

5

試試這個:

;WITH CTE AS 
(
    SELECT CONVERT(DATETIME,LEFT([Date],8)+' '+ 
          SUBSTRING([Date],10,2)+':'+ 
          SUBSTRING([Date],12,2)+':'+ 
          SUBSTRING([Date],14,2)+'.'+ 
          RIGHT([Date],3)) [Date], 
      ItemId, 
      Parms, 
      [OBJECT] 
    FROM ( SELECT ItemId, 
        CONVERT(VARCHAR(18),[Date]) [Date], 
        Parms, 
        [OBJECT] 
      FROM YourTable 
      WEHRE UserCode = 'Automation' AND ListType = 'M') A 
) 
SELECT ItemId, 
     CONVERT(DATE,[Date]) [Date], 
     CONVERT(TIME(0),[Date]) [Time], 
     SUBSTRING(Parms,1,6) +' Was removed from:' RemovalPath, 
     [OBJECT] [MOVE LIST] 
FROM CTE 
WHERE [Date] >= CONVERT(DATE,DATEADD(DAY,-4,GETDATE())) 
+0

Msg 102,Level 15,State 1,Line 12 'A'附近語法不正確。 –

+0

@omarK好的,現在就試試吧。 – Lamak

+0

我收到一個錯誤。 –

0

像這樣的東西應該工作:

SELECT ItemId, 
DATEADD(HH, -4, CONVERT(DATETIME, substring(DATE, 1, 4) + '-' + substring(DATE, 5, 2) + '-' + substring(DATE, 7, 2) + ' ' + substring(DATE, 10, 2) + ':' + substring(DATE, 12, 2) + ':' + substring(DATE, 14, 2) + '.' + substring(DATE, 16, 3))), 
SUBSTRING(Parms,1,6) +' Was removed from:' AS RemovalPath, 
[OBJECT] AS [MOVE LIST] 
FROM JnlList 
where UserCode = 'Automation' AND ListType = 'M' 
AND DATEADD(HH, -4, CONVERT(DATETIME, substring(DATE, 1, 4) + '-' + substring(DATE, 5, 2) + '-' + substring(DATE, 7, 2) + ' ' + substring(DATE, 10, 2) + ':' + substring(DATE, 12, 2) + ':' + substring(DATE, 14, 2) + '.' + substring(DATE, 16, 3))) > GETDATE() - 4 
Order by Date DESC, RemovalPath DESC; 
+0

sergio它給了我這個錯誤:Msg 102,Level 15,State 1,Line 2 ','附近語法不正確。 –

+0

已更新,現在應該可以工作... –

+0

您可以在代碼的時間部分刪除7微秒的數字嗎? –

相關問題