我知道已经有一些关于SO的问题,但我找不到正确的答案.
我正在尝试按照这样的形式订购日期:01-01-1999.我的查询如下所示:
SELECT id, header, date FROM table ORDER BY date DESC
Run Code Online (Sandbox Code Playgroud)
我得到4行似乎没问题,(它们是一样的)但是后来我得到了一些奇怪的结果.
字段是VARCHAR(); - 存储01-01-1999格式应该在哪个字段?
奇怪的结果是我得到4x30-08-2012 ..然后很多旧的约会,但突然有13个2012年的2记录.
我的问题是:为什么不对它们进行排序:2x13-09-2012然后4x30-08-2012再进一步.
UPDATE
问题已经解决了.但是仍然:我将使用哪个数据字段来代替我的日期而不是VARCHAR?
juergen给出了一个答案,基本上涉及每次解析的日期.另外两个选择建议自己:
更改数据库模式,以使列已经是日期类型(例如DATE)而不是字符串.当您使数据库列准确表示要存储在其中的数据类型时,生活通常要好得多.
如果确实需要将数据存储在字符串列中,请考虑将格式更改为yyyy-MM-dd.这是一种自然可排序的格式,因为"字母"排序与日期的"语义"排序兼容.
第一个选择肯定是首选的IMO.这超出了订购范围,达到:
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |