Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Sql Server组中按日期按格式化日期排序?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

如何在Sql Server组中按日期按格式化日期排序?

如何在Sql Server组中按日期按格式化日期排序?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的表格如下: Table: student_test_records Student TestDate Result ------- ------------------ ------- A 2015-01-26 17:28:11 Pass B 2015-01-24 17:28:11 Fail C 2015-01-26 17:28:11

我的表格如下:

Table: student_test_records

Student    TestDate                    Result
-------    ------------------          -------
A          2015-01-26 17:28:11         Pass
B          2015-01-24 17:28:11         Fail
C          2015-01-26 17:28:11         Pass
D          2015-01-26 17:28:11         Fail
E          2014-05-23 17:28:11         Pass
F          2013-06-23 17:28:11         Pass
G          2014-05-23 17:28:11         Fail
我正在尝试在SQL Server中编写查询,以按以下格式显示每天通过/失败的结果数:

FormattedDate          Result  Count
-----------            ------  ----- 
May-23-2013            Pass    1
May-23-2014            Fail    1
May-23-2014            Pass    1
Jan-24-2015            Fail    1
Jan-26-2015            Fail    1
Jan-26-2015            Pass    2
以下是我尝试的查询:

SELECT FORMAT(TestDate, 'MMM-dd-yyyy') as FormattedDate, Result, Count
FROM student_test_records  
GROUP BY FORMAT(TestDate, 'MMM-dd-yyyy'), Result 
order BY FORMAT(TestDate, 'MMM-dd-yyyy');

结果集是正确的,但排序是按格式化的日期字符串(按字母顺序为月-日-年)进行的。如何在实际日期(TestDate)排序结果?在MySQL中,我可以按TestDate进行排序,而不是上面查询中的最后一行。

几乎已经有了

SELECT FORMAT(TestDate, 'MMM-dd-yyyy') as FormattedDate, Result, Count(*)
FROM student_test_records  
GROUP BY TestDate, Result 
ORDER BY TestDate;
这应该起作用:

SELECT 
  FORMAT(cast(TestDate as date), 'MMM-dd-yyyy') as FormattedDate,
  Result,
  Count(*) as Count
FROM student_test_records  
GROUP BY cast(TestDate as date), Result 
ORDER BY cast(TestDate as date);

我试过了。我需要按MMM dd yyyy分组,因为我需要消除小时、分钟、秒等。但是如果我这样做,我就不能按测试日期下单。我将被迫按格式化的日期排序,它以字符串而不是日期排序。这将导致根据日期对数据增益进行分组。哇,这很有效!您能解释一下为什么需要强制转换吗?因为您需要删除时间戳,sqlserver无法将该格式识别为日期。如果改用convert/cast,情况会有所不同