【问题标题】:dateadd seconds < dateadd days issuesdateadd seconds < dateadd days 问题
【发布时间】:2018-06-14 09:26:42
【问题描述】:

我有一个问题,我试图显示一天 I.E. 的特定时间范围内的升级。我想根据升级的优先级查看今天的所有升级。

SELECT tas.TASK_ID as TICKET, 
tas.TASKNAME,
chg.ASLOGID as ASSIGNEE,
DATEADD(SECOND, logs.SUBMIT_DATE , '19700101') as SUBMIT_DATE,
tas.PRIORITY,
FROM dbo.TASK as tas,
dbo.CHANGE as chg,
dbo.WORKLOG as logs
WHERE chg.ASLOGID in ('Some Users')
and tas.TASKNAME like ('Escalation%')
and chg.CHANGE_ID = tas.TASK_ID
and logs.CHANGE_ID = chg.CHANGE_ID
and logs.SUBMIT_DATE = 
    (Select MAX(logs2.SUBMIT_DATE) from dbo.WORKLOG as 
    logs2 where logs2.CHANGE_ID = logs.CHANGE_ID)
    and DATEADD(SECOND, logs.SUBMIT_DATE , '19700101') < DATEADD(DD, CASE WHEN 
    tas.PRIORITY = 0 THEN -1
    WHEN tas.PRIORITY = 1 THEN -2
    WHEN tas.PRIORITY = 2 THEN -4
    ELSE -6 END, CURRENT_TIMESTAMP)
Order by SUBMIT_DATE

我的查询似乎主要工作,但我不确定 Second Max Select 是否正常工作。发生的情况是,我可以在一天开始时看到一些升级,但是一旦它们在当天晚些时候被清除,屏幕上就会弹出另一个 E.G.昨天16:30左右,屏幕上出现了以下升级。据我所知,PRIORITY 没有任何变化。

+-----------------+-------------+----------+---------------------+----------+
|     TICKET      |  TASKNAME   | ASSIGNEE |     SUBMIT_DATE     | PRIORITY |
+-----------------+-------------+----------+---------------------+----------+
| INC000012345678 | Escalation  | User1    | 11/06/2018 09:41:51 |        1 |
+-----------------+-------------+----------+---------------------+----------+

正如我所说的,我正在尝试当天可能出现的所有升级,我很欣赏这个问题可能与 dateadd 秒数有关,然后尝试倒数 dateadd 天数,但我本以为上面会有09:41 后突然出现?我对此比较陌生,所以我可能对它的工作原理有点天真。

感谢您提出正确的建议,并在此先感谢您。

【问题讨论】:

  • 我想我可能已经用 CAST as DATE 解决了这个问题

标签: sql sql-server-2008-r2 dateadd


【解决方案1】:

解决者:

and CAST(DATEADD(SECOND, logs.SUBMIT_DATE , '19700101') as DATE) < DATEADD(DD, CASE WHEN 
tas.PRIORITY = 0 THEN -1
WHEN tas.PRIORITY = 1 THEN -2
WHEN tas.PRIORITY = 2 THEN -4
ELSE -6 END, CURRENT_TIMESTAMP) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2014-08-31
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多