gpt4 book ai didi

mysql - ORDER BY 日期错误

转载 作者:行者123 更新时间:2023-12-01 00:01:47 25 4
gpt4 key购买 nike

我知道 SO 上已经有一些这样的问题,但我找不到正确的答案。

我正在尝试按格式如下的日期进行订购:01-01-1999。我的查询如下所示:

SELECT id, header, date FROM table ORDER BY date DESC

我得到 4 行,这看起来没问题,(它们是相同的)但随后我得到了一些奇怪的结果。

字段是VARCHAR(); - 存储 01-01-1999 格式应该是什么字段?

奇怪的结果是我得到的是 4x30-08-2012.. 然后是很多旧日期,但突然有 2 条记录是 13-09-2012。

我的问题是:为什么不对它们进行排序:2x13-09-2012,然后是 4x30-08-2012,然后再继续。

更新

问题解决了。但仍然:我会为我的日期使用什么数据字段而不是 VARCHAR?

最佳答案

juergen 给出了一个答案,基本上涉及每次解析的日期。不过,还有另外两种选择:

  • 更改您的数据库架构,使该列已经是日期类型(例如 DATE )而不是字符串。当您使数据库列准确地代表您要存储在其中的数据类型时,生活通常会好很多。

  • 如果您真的需要将数据存储在字符串列中,请考虑将格式更改为 yyyy-MM-dd。这是一种自然可排序的格式,因为“字母”排序与日期的“语义”排序兼容。

在我看来,第一个选项绝对是首选。这不仅仅是订购,还包括:

  • 验证(好吧,希望如此;我了解到 MySQL 对无效数据的容忍度比我个人喜欢的要高,但是...)
  • 转换:我不确定 PHP 支持是什么样的,但一般来说,您应该能够向数据库发送日期/时间值或从数据库接收日期/时间值,无需将它们转换为字符串,这消除了容易出错的转换
  • 目的明确:为检查数据库的任何人提供尽可能多的帮助。无论您对数据了解多少,都将其放入模式中。如果您将所有内容都存储为 varchar,无论它是文本、数字还是日期/时间数据,您不妨说“好吧,这只是一些东西

关于mysql - ORDER BY 日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com