【问题标题】:Sorting Date Difference in SQL在 SQL 中对日期差异进行排序
【发布时间】:2014-03-19 08:10:38
【问题描述】:

我在写:

Select datediff(hh,getutcdate(), End_Date) as "Duration" 
from MasterTable 
order by Duration

按升序获取小时值的差异。我得到输出,

期间 -------- -259 -210 5 10 22 35 75 105 235

但我想,必须根据小时值的正数和负数进行排序。所以,我需要输出为:

期间 -------- 5 10 22 35 75 105 235 -259 -210

是否有任何调整来完成这样的任务?提前致谢。

【问题讨论】:

  • 序列尾不应该是:...,..,-210,235,-259

标签: sql sql-server datetime datediff


【解决方案1】:

如果您确实需要序列,正如您在问题中指出的那样,首先是升序的所有正数,然后是升序的负数,它应该是:

Select datediff(hh,getutcdate(),End_Date) as "Duration" from MasterTable
order by CASE WHEN Duration >= 0 THEN 0 ELSE 1 END,Duration

【讨论】:

    【解决方案2】:

    了解您需要的是忽略持续时间符号:

    尝试使用 ABS:

    Select datediff(hh,getutcdate(),End_Date) as "Duration" from MasterTable order by ABS(Duration)
    

    【讨论】:

      【解决方案3】:

      试试这个,

      Select Abs(datediff(hh,getutcdate(),End_Date)) as "Duration" from MasterTable order by Abs(Duration)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-24
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        相关资源
        最近更新 更多