查询日期范围'01 -01-2019' 和'02 -02-2019' 不工作

问题描述 投票:0回答:2

我有一个日期范围像'01 -01-2019' 之间的查询'03和-02-2019' ,它是工作,而我的日期范围像'01 -01-2019' 和'02的改变天(02) - 02-2019' ,那么查询是行不通的。

我有来自01日期范围查询-01-2019' 和To:'03 -02-2019' 像

SELECT * FROM `customer_info` WHERE `rec_date` between '01-01-2019'  and  '03-02-2019'

所以它是工作,但是当我改变日期范围的像'01天-01-2019' 和To:'02 -02-2019' 和查询

SELECT * FROM `customer_info` WHERE `rec_date` between '01-01-2019'  and  '02-02-2019'

但是,查询不工作。

我想从这个查询,它应该更改为的日期范围内的一天后取记录:'02 -02-2019'.Please告诉我解决它为什么不取的记录。

mysql
2个回答
0
投票

与只有日期:MySQL的日期格式是这样的:YYYY-MM-DD。在一个简单的方式可以作为查询

select * from customer_info where rec_date between '2019-01-01' and '2019-02-02'

要么

select * from customer_info where rec_date between >= '2019-01-01' and '2019-02-02'

随着日期及时间:只要使用其中的MySQL处理日期YYYY-MM-DD HH:MM格式:SS,并有查询作为

select * from customer_info where rec_date >= '2019-01-01' and rec_date <= '2019-02-02'

特别是因为现在的MySQL支持亚秒级的时间精度。使用23:59:59是一天结束的一个完整的第二短。其中rec_date> =“2019年1月1日”和rec_date <=“2019年2月2日”是定义一个时间范围,并且将的时间精度任何级别从日期到子第二单元工作的最精确的方法。

要么

就那么简单。

select * from customer_info where rec_date between '2019-01-01 00:00:00' and '2019-02-02 23:59:00'

0
投票

这rec_date可能是一个VARCHAR或CHAR类型而不是DATE类型。

然后,它应该从得到一个范围之前被转换为DATE类型。 否则会之间按字母顺序比较字符串。

而当你再查询的日期范围,使用日期常量“YYYY-MM-DD”格式。 这不会导致与月和天混乱。 (是'01 -04-2019' 4月1日,月或1月4日?)

SELECT * 
FROM `customer_info` 
WHERE STR_TO_DATE(rec_date,'%m-%d-%Y') BETWEEN '2019-01-01' and '2019-03-02'
© www.soinside.com 2019 - 2024. All rights reserved.