2014-11-21 171 views
0

我有数据库中的日期字段,但不幸的是日期字段类型是varchar。日期插入像08-07-2010(dd-mm-yy)。我想按日期顺序(年份)按照08-07-2009,07-07-2010缩短数据。当我使用“按日期排序asc”是一年中的短数据时,比如07-07-2010,08-07-2009。请给我任何建议,如果你有我的查询是当字段类型是varchar的短日期麻烦

select * from tbl_name order by date asc 

回答

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 
+0

感谢您帮助其作品.. – user2897328 2014-11-21 08:05:32