MYSQL日期间查询行为
我的问题如下:MYSQL日期间查询行为,mysql,sql,date,datetime,where-clause,Mysql,Sql,Date,Datetime,Where Clause,我的问题如下: SELECT * FROM tbl_invoice_header WHERE Create_Date BETWEEN '2019-04-01' AND '2020-03-31' AND Auth_Settle_Date >'2020-03-31'; 我想获取日期范围之间的所有数据,但这是在2020-03-31之后解决的 它返回一行,其中Auth\u Settle\u Date=2020-03-3114:24:36 Auth_Settle_Date是一个日期时间列,所以我
SELECT * FROM tbl_invoice_header
WHERE Create_Date BETWEEN '2019-04-01' AND '2020-03-31'
AND Auth_Settle_Date >'2020-03-31';
我想获取日期范围之间的所有数据,但这是在2020-03-31之后解决的
它返回一行,其中Auth\u Settle\u Date=2020-03-3114:24:36
Auth_Settle_Date是一个日期时间列,所以我想这就是它返回的原因
我想这是正确的,因为它是在2020年3月31日,但不是功能,我一直在寻找
根据之前的评论,如果我使用:
其中创建日期介于“2019-04-01”和“2020-03-31”之间
和授权结算日期>'2020-03-31'
如果我使用:
其中创建日期>='2019-03-01'和创建日期='2020-04-01'
或
其中创建日期>='2019-03-01'和创建日期<'2020-04-01'
授权结算日期>='2020-03-31'+间隔1天
其中,实际正确的查询似乎是:
其中创建日期介于“2019-04-01”和“2020-03-31”之间
和授权结算日期>='2020-04-01'
因此,我想在我将其传递到查询之前,我必须在查询之外添加一天到截止日期,这看起来很奇怪
是获得功能的唯一方法,可在提供的日期基础上增加1天
是的,这是正确的方法。我还建议在create_date
上使用半开间隔,以防它也有时间部分:
where create_date >= '2019-03-01'
and create_date < '2020-04-01'
and auth_settle_date >= '2020-04-01'
您可以使用
+INtervall
进行此操作
SELECT * FROM tbl_invoice_header
WHERE Create_Date BETWEEN '2019-04-01' AND '2020-03-31'
AND Auth_Settle_Date > '2020-03-31' + INTERVAL 1 DAY;
SELECT * FROM tbl_invoice_header
WHERE Create_Date BETWEEN '2019-04-01' AND '2020-03-31'
AND Auth_Settle_Date > '2020-03-31' + INTERVAL 1 DAY;