>

표 : items_order

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

이런 질문이 있습니다 "12 월에 구매 한 모든 품목의 평균 가격을 선택 하시겠습니까?"

이것은 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'

제 질문은 언제 SQL에서 date_format 함수를 사용해야합니까? 이 문제로 어떤 문제가 더 빨리 해결됩니까?


  • 답변 # 1

    LIKE 를 사용하지 마십시오  데이트! LIKE  문자열의 연산자이며 날짜는문자열이 아닙니다. MySQL에는 원하는 기능을위한 내장 함수가 많이 있습니다.

    12 월 전체의 데이터를 원하면 month() 를 사용하십시오. :

    where month(order_date) = 12
    
    

    12 월의 데이터를 원하면 날짜 비교를 사용하십시오 :

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

    특히 다양한 날짜의 경우 직접 비교는 색인을 활용할 수 있습니다.

  • 이전 C에서 int를 문자열로 변환하는 방법은 무엇입니까?
  • 다음 c++ - 64 비트 개발에 해당하는 0xDEADBEEF?