表:items_ordered
from mts_functional import some_function
我有这样的问题 “选择12月份购买的所有订购商品的平均价格吗?”
这是针对MYSQL的,我已经尝试使用SQL LIKE运算符解决它。
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
但是,我正在考虑使用date_format解决此问题的另一种方法:
select avg ( price)
from items_ordered
where order_date like ('%Dec%')
我的问题是,何时应该在SQL中使用date_format函数?有了这个问题,哪一个解决得更快?
答案 0 :(得分:5)
请勿为日期使用LIKE
! LIKE
是字符串的运算符,日期不是 strings 。 MySQL有很多内置函数可以满足您的需求。
如果要获取所有十二月的数据,请使用month()
:
where month(order_date) = 12
如果要获取一个12月的数据,请使用日期比较:
where order_date >= '2018-12-01' and order_date < '2019-01-01'
尤其是在日期范围内,直接比较可以利用索引。