列的秒表

在我们的组织帮助台中,我们想要计算从创建票证开始所花费的时间。我们有许多地点,具有不同的工作时间设置。有些地点全天候工作,有些地点从上午9点工作到下午5点。每天早上,我需要运行一个查询,以获取年龄超过8小时的门票,并对其执行一些操作。在SQL Server中是否有秒表列或任何其他选项,通过这些选项,年龄会以分钟为单位自动递增,以便每当我们进行查询时,我们都可以获得自创建以来的确切年龄。

例如,如果位置是分支机构,工单创建于2020/07/10 15:00 PM,如果在2020/07/11 09:00 AM执行查询,则每个运营时间(上午9:00到下午5:00)的年龄为2小时。如果票证的地点是总公司,则运营时间为24x7,票证的使用期限为18小时。

添加了用于处理此信息的3列。

IS_TIMER_RUNNING : true | false true:在运营时间(上午9点到下午5点)。false:非工作时间(下午5点到上午9点)。TIMER_RUNNING_TIME : datetime TICKET_AGE :以秒为单位的时间

在上午9点使用作业时,IS_TIMER_RUNNING将设置为true。在下午5点的作业中,IS_TIMER_RUNNING将设置为false,并且TICKET_AGE将填充以秒为单位的时间,直到该时间结束。

我尝试了下面的查询,它给出了预期的查询。

SELECT 
  TICKETID, 
  CONVERT(
    VARCHAR, 
    DATEADD(
      s, 
      CASE WHEN IS_TIMER_RUNNING = '1' THEN datediff(
        s, 
        dateadd(
          s, 
          (wo.TIMER_RUNNING_TIME / 1000), 
          '1970-01-01 00:00:00'
        ), 
        GETUTCDATE()
      ) + TICKET_AGE ELSE TICKET_AGE END, 
      '1900/01/01'
    ), 
    108
  ) 
FROM 
  TICKET

如果有其他更好的选择,敬请指教

转载请注明出处:http://www.xinxianzhihui.com/article/20230526/1475304.html