php - SQL排序查询
问题描述
我有一个 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
列并将日期值添加到其中。
恕我直言,您必须具有日期值才能按日期排序,但是您决定实现这一点。
推荐阅读
- python - BeautifulSoup 中的“'ascii' 编解码器无法编码字符”错误
- android - Android OOS,同时绘制 UI 并从本地加载图像
- .net - 关于参数类型的 VB .net 问题,例如(类型)
- android - 在android中使用Volley库时出现401授权错误
- amazon-web-services - 将数据加载到 redshft 数据库
- python - 在迭代两个列表Python时获取列表列表中的项目以与值进行比较
- reactjs - 如何在渲染 ReactJS 中动态创建两个输入占位符
- r - 使用 R 脚本将 AWS S3 环境变量传递给 docker
- python - 查找具有 True 值的列
- python - Pyspark:您似乎正在尝试从广播变量、操作或转换中引用 SparkContext