我有这个问题:
SELECT id
, order_date
, seat_number
, cashier_fk
, branch_fk
, waiter_fk
, void
, total_amount
, customer_name
, payment
, notes
, down_payment
, received_date
, void_reason
, discount
, discount_percentage
, printed
, done
, vat
, service_charge
FROM order_tbl
WHERE received_date between "2018-03-15" AND "2018-03-18"
但它显示 我的表有这样的记录:
id-------order_date
1-------2018-03-09 09:09:25
2-------2018-03-13 18:29:16
3-------2018-03-13 20:00:49
4-------2018-03-13 20:01:46
5-------2018-03-13 20:05:48
6-------2018-03-13 20:06:34
7-------2018-03-13 20:07:15
9-------2018-03-16 19:06:23
10-------2018-03-16 20:22:26
但它只显示
id-------order_date
5-------2018-03-13 20:05:48
6-------2018-03-13 20:06:34
7-------2018-03-13 20:07:15
9-------2018-03-16 19:06:23
10-------2018-03-16 20:22:26
我的查询有什么问题?
答案 0 :(得分:4)
不要将between
与日期或日期/时间一起使用。时间组件会抛弃一切。
相反,将逻辑表达为:
WHERE received_date >= '2018-03-15' AND
received_date < '2018-03-19'
注意范围末尾的不等式。这可确保您从该日期开始获取所有内容。
Aaron Bertrand在这个主题上有一篇非常好的博文,What do BETWEEN and the devil have in common?。