php - SQL排序查询

标签 php html mysql

我有一个 sql 表,其中有一列名为 reference_number .

reference_number具有格式为 x-MMYY-xxxx 的值。 (MM 代表月份,YY 代表年份。-xxxx 是自动递增。)

我的问题是,如果我将以下值输入 reference_number

2012 年 3 月 (x-0312-xxxx)

2012 年 4 月 (x-0412-xxxx)

2013 年 1 月 (x-0113-xxxx)

ORDER BY reference_number会将它们排序为

x-0113-xxxx

x-0312-xxxx

x-0412-xxxx

有没有办法排序reference_number按正确的日期顺序。

最佳答案

我假设您的 reference_number 列的数据类型是字符字段?

按字符字段排序将“尽最大努力”理解数据并将其解释为所需排序的格式,在本例中,您会注意到它将引用文献的日期部分解释为数值,并且因此,将以这种方式对它们进行排序。

字母数字数据将按此排序。

如果您需要按日期排序数据,可以采用多种解决方案,但最终您需要一个 DateTime 值作为排序依据。

添加一个 reference_date 列,并通过直接插入或数据库触发器等方式向其中添加日期值。

恕我直言,您必须具有日期值才能按日期排序,无论您决定如何实现这一目标。

关于php - SQL排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53610077/

相关文章:

php - 如何测试推送/C2DM 通知到 Android 应用程序?

html - 试图在 td 中居中对齐按钮

html - 谷歌结构化数据测试工具无评论如何处理

php - 如何在php中为请求超时计时

php mysql 使复选框被选中

html - Bootstrap 向右浮动元素

php - MySQL 从数组中获取行

mysql - 如何使这个 MySql 查询适应 PervasiveSql?

java - Spring JPA 和 Hibernate 的 JPQL 查询错误

php - 如何循环遍历数组并在到达末尾时重新开始?