Mam następująco tabelę:Jak zamówić według daty w Sql Server GROUP BY sformatowana data?
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
Ja próbuje napisać zapytanie w SQL Server, aby wyświetlić liczbę przeszedł/nie powiodła wyniki dziennie w następującym formacie:
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
The Poniżej znajduje zapytania próbowałem:
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');
zestaw wynik jest prawidłowy, ale kolejność przychodzi sformatowany ciąg data (miesiąc-dzień-rok alfabetycznym sprzymierzyć). Jak mogę zamówić wynik w rzeczywistej dacie (TestDate)? W MySQL mogłem wykonać ORDER BY TestDate
zamiast ostatniej linii w powyższym zapytaniu.
Wow, to działa! Czy mógłbyś wyjaśnić, dlaczego obsada jest potrzebna? – devnull
ponieważ trzeba usunąć znacznik czasu, sqlserver nie może rozpoznać tego formatu jako daty. Byłoby inaczej, gdybyś zamiast tego używał konwersji/rzutowania –