У меня следующий запрос:
SELECT o.OrderNumber, cast(o.DateOrdered as datetime), cast(oi.Category as varchar(max)) FROM Orders o LEFT OUTER JOIN OrderItems oi ON oi.OrderID = o.uid LEFT OUTER JOIN OrderAddresses oa ON oa.OrderID = o.uid WHERE O.DateOrdered LIKE '6%2011%' AND (oa.Type = '4') AND (oa.Country = 'US') GROUP BY cast(oi.Category as varchar(max)), cast(o.DateOrdered as datetime), o.OrderNumber
У меня проблемы с форматированием datetime как mm/dd/yyyy. Неважно, что я пробовал, я продолжаю получать YYYY-MM-DD 00:00:00:000. Я должен пропустить что-то простое в синтаксисе и надеялся, что кто-то может указать мне правильное направление? (SQL Server 2005)
datetime
mm/dd/yyyy
YYYY-MM-DD 00:00:00:000
Спасибо!
CAST будет преобразовывать только типы данных, но не дает возможности выбирать любое форматирование.
CAST
Для форматирования вам нужно будет использовать CONVERT (см. MSDN Books Online для подробной информации):
CONVERT
Попробуйте
SELECT CONVERT(VARCHAR(25), GETDATE(), 101)
, которая должна отображать текущую дату в нужном формате.
Попробуйте CONVERT вместо CAST:
CONVERT(VARCHAR(10), o.DateOrdered , 101)
Таким образом, оператор GROUP BY будет выглядеть так:
GROUP BY CAST(oi.Category as varchar(MAX)), CONVERT(VARCHAR(10), o.DateOrdered , 101), o.OrderNumber
Похоже, DateOrdered является VARCHAR
Пожалуйста, попробуйте
SELECT o.OrderNumber, CONVERT(VARCHAR(25),cast(o.DateOrdered as datetime), 101), cast(oi.Category as varchar(max)) FROM Orders o LEFT OUTER JOIN OrderItems oi ON oi.OrderID = o.uid LEFT OUTER JOIN OrderAddresses oa ON oa.OrderID = o.uid WHERE O.DateOrdered LIKE '6%2011%' AND (oa.Type = '4') AND (oa.Country = 'US') GROUP BY cast(oi.Category as varchar(max)), CONVERT(VARCHAR(25),cast(o.DateOrdered as datetime), 101), o.OrderNumber