-1

我目前正在使用 SQL Server Management Studio 2008,并且该数据库是很久以前创建的。创建它的人将 Date 设置为数值,并将 GMT Time 设置为比实际时间提前 4 小时,从而在查询中的某处强制使用 -4 Hour 函数。我感兴趣的只是在 4 小时转换后的当天前 4 天的数据,并具有正确的日期和时间格式。

列:日期(数字(17,9),非空)参数(nvarchar(2000),空)...等。

   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
   -----

任何人都可以更改我的查询以获得所需的输出吗?那将不胜感激。

4

2 回答 2

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()))
于 2013-06-28T16:58:55.070 回答
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;
于 2013-06-28T17:08:43.837 回答