作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想根据日期对我的结果集进行排序,日期是 varchar 类型,格式为 (dd/MMM/YYYY),但问题是它无法正常工作。经过大量搜索后,我正在使用此查询,但仍然无法获得我想要的结果。
SELECT `batch_expiry` FROM `batchwise_stock` ORDER BY str_to_date(`batch_expiry`, '%d/%m/%Y')
排序不正确,但得到这个排序的日期
29/Apr/2020
03/May/2020
16/May/2020
12/May/2020
14/May/2020
请需要帮助,在此先感谢。
最佳答案
问题是您的日期不是 %Y/%m/%d
格式。在这种格式中,月份是数字。您的格式是 %Y/%b/%d
,因此请使用:
order by str_to_date(batch_expiry, '%d/%b/%Y')
Here是一个数据库<> fiddle 。
您的表达式的结果是 NULL
,因为日期列无法转换为该格式。所有 order by
键都是等价的,因此结果集中的顺序是任意的。
正如 Strawberry 在评论中指出的那样,您应该使用正确的类型而不是字符串来存储日期值。
关于MYSQL ORDER BY 日期类型 Varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62251700/
我是一名优秀的程序员,十分优秀!