[Homework] Databases Basics - Built In Functions - Problem 12. Games from 2011 and 2012
Колеги, ако някой има проблем с конкретната задача, едно малко упътване от мен. Оказва се, че няма значение как си кръщавате колоните.В тази задача даже е препоръчително да не кръстите Start пак Start след използването на FORMAT.
Хубав ден на всички.
EDIT: оказва се, че при използване на alias на таблицата и реферирането му при order by, може новото име на Start пак да е Start.
Здравей.
Използвай FORMAT(Start, 'yyyy-MM-dd') as 'Start' вместо каста.
А също така Order By 2,1 подрежда по aliasa 'Start', не по G.Start, което орязва датите преди да ги сортира. Използвай Order By G.Start, G.Name.
Така работи.
Да, сработи. Пак благодаря. И за обясненията. А с CAST не работи, защото има тук-там и интервали за заигравка :)
Абсолютно никакъв проблем.
Аз използвам кастове само при INSERT.
Успех.
В MSSQL има огромно значение как си налисал FORMAT(Start, 'yyyy-MM-dd') , а именнто - пробвайте с 'YYYY-ММ-dd', 'yyyy-mm-DD', 'YYYY-mm-DD' .. ще видите какви чудесии излизат :) И реално това, което е цитирано в условието като формат 'YYYY-MM-DD', не минава в judge, нито извежда читав форматинг. Що се отнася до това дали ще сортираш по алайас Start или по g.Start - не би ли следвало да няма разлика, тъй като реално ние променяме само формАта на самите данни, но не ги орязваме?
По отношение на сортирането ако пуснеш това query
и после това
можеш да видиш, че има разлики. FORMAT към дата е все едно да се взема само date частта от datetime променливата. Използвайки FORMAT с alias 'Start', каквото е името на променливата явно прави нещо като override на променливата. Понеже физически SELECT се изпълнява преди ORDER BY, първо става override-a и след това сортирането. Ако искаш да сортираш по неформатираната променлива я реферираш чрез alias-а на таблицата.
'yyyy-MM-dd' e валиден формат и то защото mm се използва за минути. Други валидни формати
SELECT TOP(50) [Name], FORMAT(Start, 'yyyy-MM-dd') AS [Start]
FROM Games
WHERE YEAR(Games.Start) IN(2011,2012)
ORDER BY [Start],[Name]
Според мен вместо 'Start' трябв ада е [Start] и [Game].