例如,我们有这样的约会:
04/04/2017
12/12/2016
03/04/2016如何才能订购其结果的日期:
11/12/2016
03/04/2016
12/04/2017ORDER BY ASC/DESC不工作。请帮帮忙。
顺便说一句,我有药品的数据,上面有过期的日期。我只想让我的列表上的第一个数据成为第一个过期的药。
发布于 2016-01-03 14:22:41
如果您使用这个函数
STR_TO_DATE('04-04-2017', '%d/%m/%Y')您将将包含日期的varchar转换为日期数据类型。那些分类正确。
所以,
ORDER BY STR_TO_DATE(expireation_date_column, '%d/%m/%Y') NULLS FIRST会给你一个有用的订单。NULLS FIRST部件将显示格式不正确的日期(如果有的话)在订单顶部的行。
如果这是一个大型项目,则在将这些过期日期插入表时将其转换为日期数据类型可能是明智的。这样,您就可以获得各种好处,包括使用索引搜索这些日期的能力。
发布于 2016-01-03 14:22:20
试试这个:
ORDER BY STR_TO_DATE(your_date_column, '%d/%m/%Y')您的日期以这种格式保存为varchar dd/mm/yyyy
发布于 2016-01-03 14:32:28
当然,最好的解决方案是使用DateTime数据类型,而不是使用Varchar?
您将得到一个更有效的查询计划排序,对一个索引的DateTime列相比,日期时间转换的版本。
这也将防止无效的日期被存储,这是可能的,用Varchar。
如果要查询列,则索引日期时间列也会有所帮助。
https://stackoverflow.com/questions/34577379
复制相似问题