datetime之间的mysql显示错误的记录

时间:2018-03-16 18:12:02

标签: mysql sql

我有这个问题:

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

我的查询有什么问题?

1 个答案:

答案 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?