我有一个表,并且列名为日期,数据类型为varchar(50)。 像这样:
dates
-------
16/06/2017
25/05/2017
03/06/2017
17/06/2017
03/06/2017
12/06/2017
05/06/2017
06/06/2017
15/06/2017
13/06/2017
29/04/2017
21/05/2017
我试过了:
select s.date
from add_vehicle a
left join services s
ON a.vid=s.vid
where date BETWEEN '01/04/2017' AND '19/06/2017'
我只收到第6个月的数据。
如果我将'19 / 06/2017'更改为'30 / 06/2017',那么我会获得余额结果。
有什么问题?如何解决?
请指导我。
注意:sqlfiddle无法正常工作
答案 0 :(得分:1)
修复您的数据!出于某种原因,数据库支持日期/时间数据类型。那是因为你应该使用它们。在您的情况下,您可以这样做:
UPDATE t
SET dates = date_format(str_to_date(date, '%d-%m-%Y'), '%Y-%m-%d');
然后,更改数据类型:
ALTER TABLE t MODIFY dates date;
瞧!您的代码将开始工作。
不要编写过于复杂的查询来解决数据中的问题。修复数据。