2016-03-23 1 views
-1

Я работаю над домашним заданием, и все прошло хорошо, пока я не добрался до этого момента. Мой профессор хочет, чтобы я вытаскивал только даты в МАРТЕ, АПРЕЛЬ и МАЙ, без использования оператора МЕЖДУ.SQL: попытка сортировки данных для отображения определенных месяцев

ПРИМЕЧАНИЕ. У меня нет ошибок. Я использую EDUPE, который запускает MySQL, но имеет небольшие отклонения, когда некоторые вещи просто не будут работать.

Вопрос был, есть ли способ сделать код у меня есть функция правильно? Или я иду в неправильном направлении?

/*Exercise Six*/ 
SELECT order_id as "Order ID", DATE_FORMAT(order_date, '%M-%d-%Y') as "Order Date" 
FROM orders 
WHERE order_date IN ('March%', 'April%', 'May%') 
ORDER BY order_date ASC; 
+0

Вы используете MySQL? – potashin

+0

Вы спрашиваете о Workbench MySQL, правильно? Я на самом деле запускаю его в онлайн-компиляторе. Очень интересный материал, но у меня есть верстак MySQL, если есть что-то, что, по-твоему, мне лучше там. – Sierra

+1

Я имею в виду РСУБД, поскольку функции даты могут отличаться для каждого из них. – potashin

ответ

1

Вы можете попробовать с date_format снова:

WHERE DATE_FORMAT(order_date, '%M') IN ('March', 'April', 'May') 

или просто monthname():

WHERE MONTHNAME(order_date) IN ('March', 'April', 'May') 
+1

Ты мой герой. – Sierra

+0

Ты меня обманываешь. Спасибо! WHERE DATE_FORMAT (order_date, '% M') IN ('March', 'April', 'May') AND DATE_FORMAT (order_date, '% Y') IN ('2014') – Sierra

0

Я не уверен, если это является наиболее эффективным способом, но вы можете сделать это с "союзом":

select order_ID, order_date from orders 
where order_date Like '%Mar%' 
union 
select order_ID, order_date from orders 
where order_date Like '%Apr%' 
union 
select order_ID, order_date from orders 
where order_date Like '%May%' 

EDIT: Я предпочитаю ответ Оташина.

+0

Ну, все же приятно знать, что у меня есть опции , :) Я никогда не пользовался Союзом, так что с ним будет весело играть. – Sierra

Смежные вопросы