MySQL функция date_format () против оператора SQL Like - PullRequest
1 голос
/ 03 июля 2019

таблица: items_ordered

customerid  order_date  item    quantity    price
10330   30-Jun-1999 Pogo stick  1   28.00
10101   30-Jun-1999 Raft    1   58.00
10298   01-Jul-1999 Skateboard  1   33.00
10101   01-Jul-1999 Life Vest   4   125.00
10299   06-Jul-1999 Parachute   1   1250.00
10339   27-Jul-1999 Umbrella    1   4.50

У меня такой вопрос «Выберите среднюю цену всех заказанных товаров, которые были приобретены в декабре?»

Это для MYSQL, и я пытался решить эту проблему с помощью оператора SQL LIKE.

select avg ( price)
from items_ordered
where order_date like ('%Dec%')

Однако я думал о другом подходе к этой проблеме с использованием date_format:

select avg ( price)
from items_ordered
where date_format ( order_date, %M) = 'Dec'

У меня вопрос, когда мы должны использовать функцию date_format в SQL? а с этой проблемой какая из них решается быстрее?

1 Ответ

5 голосов
/ 03 июля 2019

Не используйте LIKE для дат! LIKE - оператор для строк , а даты не строк . MySQL имеет множество встроенных функций для того, что вы хотите сделать.

Если вы хотите получить данные со всех декабристов, используйте month():

where month(order_date) = 12

Если вы хотите получить данные за один декабрь, используйте сравнения дат:

where order_date >= '2018-12-01' and order_date < '2019-01-01'

В частности, для ряда дат прямые сравнения могут использовать индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...