首页 > 解决方案 > 按两个日期排序查询结果

问题描述

我正在尝试使用两个日期订购一些数据,但无论出于何种原因,我都无法达到我期望的结果。

考虑以下数据集:

       DOS          |     CreatedOn
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-04 09:15:00 | 2018-09-14 13:40:42
2018-09-04 09:15:00 | 2018-09-18 12:59:01
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-18 08:30:00 | 2018-09-18 14:22:26
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-18 09:15:00 | 2018-09-18 14:43:13

我正在尝试对数据集进行排序,使其按以下顺序排列:

       DOS          |     CreatedOn
2018-09-18 09:15:00 | 2018-09-18 14:43:13
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:22:26  
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 12:59:01    
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-14 13:40:42

但是,我从查询结果中得到的是:

        DOS          |     CreatedOn
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 12:59:01
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-14 13:40:42
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:22:26
2018-09-18 09:15:00 | 2018-09-18 14:43:13

这是我的查询:

Select V.DOS,V.CreatedOn from Visits As V where V.DOS between '2018-09-01 00:00:00' and '2018-09-19 00:00:00' Order by V.DOS, V.CreatedOn desc

这两个字段都是 DateTime 字段。不知道为什么我没有得到正确的订单。当我从订单列表中删除任何一个字段并只留下一个字段时,它会正确排序。但是,当我将它们都按列表排序时,它不是首先按第一列排序。

标签: sql-serverdatetimesql-order-by

解决方案


您在 order by 子句中缺少 V.DOS 之后的 desc。您需要在每个日期之后按降序排列。目前是按DOS升序排序,CreatedOn降序排序


推荐阅读