#sql #datetime
#sql #дата-время
Вопрос:
Я использую SQL 2008. (на самом деле в asp).
SELECT orderId, CONVERT(varchar, orderDate, 101) AS Date_Ordered, CONVERT(varchar, sentDate, 101) AS Date_Shipped,
FROM orders
GROUP BY orderId, CONVERT(varchar, o.orderDate, 101), CONVERT(varchar, o.sentDate, 101)
ORDER BY Date_Shipped
Хорошо, причина, по которой я использую преобразование в выборе, заключается в том, что мои данные имеют даты с разным временем. но я хочу, чтобы все результаты были за один и тот же день. Поэтому я использовал преобразование.
Моя проблема в том, что я не могу понять, как выполнить порядок по. Я пробовал сортировать по Date_Shipped, но теперь это строка, поэтому она не сортируется должным образом.
Кто-нибудь может помочь?
Комментарии:
1. Потому что его нет в группе по
Ответ №1:
У вас есть SQL Server 2008, поэтому вы можете использовать тип даты
SELECT
orderId,
CONVERT(varchar, orderDate, 101) AS Date_Ordered,
CONVERT(varchar, CAST(sentDate as date), 101) AS Date_Shipped
FROM orders
GROUP BY
orderId, CONVERT(varchar, o.orderDate, 101), CAST(sentDate as date)
ORDER BY
CAST(sentDate as date)
Я не могу точно вспомнить, разрешено ли это, но, надеюсь, вы поняли идею: если нет, используйте это
SELECT
orderId,
Date_Ordered,
CONVERT(varchar, sentDate2, 101) AS Date_Shipped
FROM
(
SELECT
orderId,
CONVERT(varchar, orderDate, 101) AS Date_Ordered,
CAST(sentDate as date) AS sentDate2
FROM orders o
GROUP BY
orderId, CONVERT(varchar, orderDate, 101), CAST(sentDate as date)
) foo
ORDER BY
sentDate2
Ответ №2:
SELECT
orderId,
CONVERT(varchar, orderDate, 101) AS Date_Ordered,
CONVERT(varchar, sentDate, 101) AS Date_Shipped,
FROM orders
GROUP BY
orderId,
CONVERT(varchar, orderDate, 101),
CONVERT(varchar, sentDate, 101)
ORDER BY MAX(sentDate)
Кстати, o
псевдонимы в вашем запросе ошибочны, потому что у вас нет таблицы с таким псевдонимом.