我有一个 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/