字段类型为varchar时短时间内出现问题

时间:2014-11-21 07:55:44

标签: php mysql sql database

我在数据库中有日期字段,但不幸的是日期字段类型是varchar。日期插入如08-07-2010(dd-mm-yy)。我希望按日期asc order(year)缩短数据,如08-07-2009,07-07-2010。当我使用"按日期排序asc"是一年一度的短数据,如07-07-2010,08-07-2009。如果您的查询是

,请给我任何建议
select * from tbl_name order by date asc

1 个答案:

答案 0 :(得分:2)

问题是,varchar中的nerver存储日期,你应该在mysql本机日期数据类型中存储日期。 但是在您的情况下,您需要使用该函数将varchar日期转换为实际日期 str_to_date

mysql> select str_to_date('08-07-2010','%d-%m-%Y');
+--------------------------------------+
| str_to_date('08-07-2010','%d-%m-%Y') |
+--------------------------------------+
| 2010-07-08                           |
+--------------------------------------+

所以查询应该是

select * from tbl_name order by str_to_date(date,'%d-%m-%Y') asc