SQL Server中的ORDER BY子句

Abb*_*bas 4 datetime sql-order-by sql-server-2008

最近我正在使用select查询之一,其中我想根据存储在不同列中的最新日期和时间对行进行排序.客户的要求是时间是自定义的,所以我不能DateTime一起使用.

现在我有两个问题:

  1. 直到我按顺序子句进行更改时才进行排序.我的原始订单条款是:

    ORDER BY PublishDate, PublishTime DESC
    
    Run Code Online (Sandbox Code Playgroud)

    上面的查询工作正常,但只是排序PublishDate,并且什么都不做PublishTime,我明白它主要是基于排序PublishDate,并且会给予第二选择PublishTime,但是通过上面的查询它没有给出任何偏好PublishTime,但当我将order by子句更改为下面时,它运行正常:

    ORDER BY PublishDate DESC, PublishTime DESC
    
    Run Code Online (Sandbox Code Playgroud)

    谁能告诉我两个查询之间有什么区别?为什么两者都没有给予主要偏好PublishDate和次要PublishTime

  2. 是否可以将自定义时间附加到DateTime列,我的意思是说,例如,如果用户添加了一行31 March 2012并输入4:00PM,是否可以将自定义时间添加到使用检索的当前日期GETDATE()

Bri*_*ite 5

order by子句中的默认排序是ASC.因此,如果您未指定,SQL Server将在ASC中保留.所以你真的在比较

Order By PublishDate ASC, PublishTime DESC
Run Code Online (Sandbox Code Playgroud)

Order By PublishDate DESC, PublishTime DESC
Run Code Online (Sandbox Code Playgroud)

这就是为什么第二个给你你想要的东西.