Mysql 如何在sql中按升序选择日期(dd/mm/yyyy)

Mysql 如何在sql中按升序选择日期(dd/mm/yyyy),mysql,sql,database,sqlite,date,Mysql,Sql,Database,Sqlite,Date,我想在ASC订单中选择stockDate,我的表结构是:- 将日期格式更改为YYYY-MM-DD SELECT * from inventory_details ORDER BY stockDate ASC; 将日期格式更改为YYYY-MM-DD SELECT * from inventory_details ORDER BY stockDate ASC; 您已经将日期保存为varchar,它们是邪恶的,您应该使用mysql原生日期数据类型 为此,在进行排序时,首先需要使用str_to_da

我想在ASC订单中选择stockDate,我的
结构是:-


将日期格式更改为YYYY-MM-DD

SELECT * from inventory_details ORDER BY stockDate ASC;

将日期格式更改为YYYY-MM-DD

SELECT * from inventory_details ORDER BY stockDate ASC;

您已经将日期保存为varchar,它们是邪恶的,您应该使用mysql原生日期数据类型

为此,在进行排序时,首先需要使用
str_to_date
函数将varchar日期转换为real date,下面是它的工作原理

mysql> select str_to_date('31/07/2015','%d/%m/%Y') as d ;
+------------+
| d          |
+------------+
| 2015-07-31 |
+------------+
因此,查询变得

SELECT * from inventory_details 
ORDER BY str_to_date(stockDate,'%d/%m/%Y') desc

您已经将日期保存为varchar,它们是邪恶的,您应该使用mysql原生日期数据类型

为此,在进行排序时,首先需要使用
str_to_date
函数将varchar日期转换为real date,下面是它的工作原理

mysql> select str_to_date('31/07/2015','%d/%m/%Y') as d ;
+------------+
| d          |
+------------+
| 2015-07-31 |
+------------+
因此,查询变得

SELECT * from inventory_details 
ORDER BY str_to_date(stockDate,'%d/%m/%Y') desc


将DESC改为ASC:pUse一个正确的日期类型在一个月内不可能。我认为这个问题不值得否决。它写得很好,解释了问题,有表格信息和OP尝试过的内容。事实上,他们为DB做出了一个糟糕的设计选择,这是社区可以传授的东西。:)+1将描述改为ASC:在一个月内不可能有一个合适的日期类型。我认为这个问题不值得否决。它写得很好,解释了问题,有表格信息和OP尝试过的内容。事实上,他们为DB做出了一个糟糕的设计选择,这是社区可以传授的东西。:)+1好的,是的,如果OP首先修复了所有其他问题,这将起作用。正如其他答案所解释的,
stockDate
的数据类型和格式会阻止实际有意义的排序。好的,是的,如果OP首先修复了所有其他问题,这将起作用。正如其他答案所解释的,
stockDate
的数据类型和格式阻止了实际有意义的排序。感谢Abhik Chakraborty对我的帮助。我想选择具有以下条件的日期:。,,,选择*from inventory_details where stockDate>='01/07/2015'和stockDate,您需要在where条件下使用
str_to_date
,最好将输入日期设置为
Y-m-d
格式。谢谢您的帮助。我想选择一些日期条件如.,,从库存详细信息中选择*,其中stockDate>='01/07/2015'和stockDate您需要在where条件中使用
str\u to\u date
,最好将输入日期设置为
Y-m-d
格式。