这是我的tb_orders
桌子:
https://github.com/tidyverse/dplyr/issues/482
我想获取日期2016-08-29
和2017-01-14
之间的订单,包括上述日期。
我尝试使用AND
和BETWEEN
运算符进行两次查询,但是得到的结果与预期不符。
SELECT * FROM `tb_orders` WHERE `order_date` >= DATE('2016-08-29') AND `order_date` <= DATE('2017-01-14')
SELECT * FROM `tb_orders` WHERE `order_date` BETWEEN DATE('2016-08-29') AND DATE('2017-01-14')
我不明白为什么我没有获得日期为2017-01-14
的记录?有想法吗?
答案 0 :(得分:2)
您可以尝试以下操作-由于您仅传递日期,因此您需要将order_Date列转换为日期,因为您的列数据类型是时间戳记
SELECT * FROM `tb_orders`
WHERE date(`order_date`) >= '2016-08-29' AND date(`order_date`) <= '2017-01-14'
答案 1 :(得分:1)
您的问题是时间戳。如果不将其放在date参数中,它将使用00:00:00进行初始化,并且2017-01-14 05:10:26会晚于2017-01-14 00:00:00。
使用:
SELECT *
FROM `tb_orders`
WHERE `order_date` BETWEEN TIME('2016-08-29') AND TIME('2017-01-14 23:59:59'):
答案 2 :(得分:1)
一个简单的日期函数将执行以下操作。它简短而精确。
Select * FROM tbl_orders
WHERE date(order_date) BETWEEN '2016-08-29' AND '2017-01-14'