2017-02-18 812 views
2

我从mysql数据库查询日期。当我尝试仅选择从某日到某日之间的日期时,我没有收到预期的结果。如何检查日期是否在两个日期之间mysql?

我的查询:

select * from tbl_billing where date BETWEEN '09-02-2017' and '10-02-2017' 

我的输出:

09-02-2017 
10-02-2017 
10-01-2017 
09-01-2017 
09-01-2017 

我想要的结果:

09-02-2017 
10-02-2017 
+0

什么是你在MySQL表日期字段的类型? –

+1

''dd-mm-yyyy''不是有效的MySQL [日期文字](https://dev.mysql.com/doc/en/date-and-time-literals.html)。 – eggyal

回答

1

您可以使用SQL规范日期格式

select * from tbl_billing where date BETWEEN '2017-02-09' and '2017-02-10' 

或转换正确使用STR_TO_DATE

select * from tbl_billing where date BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 

,但如果你还为date一个varchar,那么你必须将这一栏也

select * from tbl_billing where str_to_date(date,'%d-%m-%Y') BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 
+0

你好罗马谢谢你的建议我,但问题是我的日期数据类型是varchar,我不能改变它,因为我在很多页面中使用,所以它不能将数据类型varchar更改为日期。如果你有任何解决方案,请告诉我罗马先生 – phpguru

+1

@phpguru改变它。更改页面。否则没有'大师'! – Strawberry

+0

@phpguru如果你也有日期列作为varchar,那么你也必须转换列..答案更新..我知道 – scaisEdge

相关问题