两个日期之间的结果将是错误的

时间:2017-06-19 11:34:18

标签: mysql

我有一个表,并且列名为日期,数据类型为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无法正常工作

1 个答案:

答案 0 :(得分:1)

修复您的数据!出于某种原因,数据库支持日期/时间数据类型。那是因为你应该使用它们。在您的情况下,您可以这样做:

UPDATE t
SET dates = date_format(str_to_date(date, '%d-%m-%Y'), '%Y-%m-%d');

然后,更改数据类型:

ALTER TABLE t MODIFY dates date;

瞧!您的代码将开始工作。

不要编写过于复杂的查询来解决数据中的问题。修复数据。