sql server语言 - 排序sql中的日期差异



我在写:

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

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

<>之前持续时间---------259年-210年510223575105235之前

但是我想,排序必须基于小时值的正数和负数。因此,我需要输出如下:

<>之前持续时间--------510223575105235-259年-210年之前

做这样的任务有什么调整吗?

如果你确实想要这个序列,就像你在问题中指出的那样,它是所有的正数以升序排列,然后是负数以升序排列,它应该是:

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

理解你需要的是忽略持续时间符号:

尝试使用ABS:

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

试试这个,

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

相关内容

  • 没有找到相关文章