【问题标题】:How can Select date(dd/mm/yyyy) in ascending order in sql如何在sql中按升序选择日期(dd/mm/yyyy)
【发布时间】:2015-08-06 08:47:56
【问题描述】:

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

【问题讨论】:

  • 将 DESC 更改为 ASC :p
  • 使用正确的日期类型
  • 按月不可能
  • 我认为这个问题不值得反对。它写得很好,解释了问题,有表格信息和 OP 尝试过的内容。他们为数据库做出了错误的设计选择这一事实是社区可以教的。 :) +1

标签: mysql sql database sqlite date


【解决方案1】:

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

为此,您首先需要在进行排序时使用 str_to_date 函数将 varchar 日期转换为实际日期,这里是如何工作的

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

【讨论】:

  • 感谢 Abhik Chakraborty 的帮助。
  • 我想选择具有某些条件的日期,例如。,,, SELECT * from inventory_details where stockDate >='01/07/2015' AND stockDate
  • 您还需要在 where 条件下使用str_to_date,最好将输入日期设为Y-m-d 格式。
【解决方案2】:
SELECT * from inventory_details 
ORDER BY str_to_date(stockDate,'%d/%m/%Y') desc

【讨论】:

    【解决方案3】:

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

    SELECT * from inventory_details ORDER BY stockDate ASC;
    

    【讨论】:

    • 嗯,是的,如果 OP 先修复所有其他问题,这将起作用。
    • 正如其他答案所解释的,stockDate 的数据类型和格式阻止了实际有意义的排序。
    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多