我正在尝试根据列值对MySQL表数据进行排序。
id | record_number | created_atupdated_at||
---|---|---|---|
1 | 2022年4月 | 2022-10-24 20:34:25 | 2022-0-24 20:34:55 |
3 | 2021年6月 | 2022-10-24 20:35:03 | 2022-10-2420:35:03
ORDER BY
1*RIGHT(record_number, 4), /* extracts the year (assumes a 4-digit year) */
1*SUBSTR( SUBSTRING_INDEX(record_number, '/', 2), 5 ) /* extracts record number */
1*
将提取的字符串转换为INT
,以便可以按数字排序,而不是按字母排序。
如果年份不总是4位数,请使用:
ORDER BY
1*RIGHT(record_number, LOCATE('/', REVERSE(record_number))-1),
1*SUBSTR( SUBSTRING_INDEX(record_number, '/', 2), 5 )
MYSQL:查找字符串中最后一个出现的字符
单向:
select *
from test
order by SUBSTRING_INDEX(SUBSTRING_INDEX(record_number,'/',-2),'/',+1) *1 asc,
str_to_date(replace(record_number,'ent','00'),'%d/%m/%Y') desc;
https://dbfiddle.uk/nUOCNgy_
首先,您需要禁用NO_ZERO_DATE,然后将ent替换为00,并使用str_to_DATE来形成日期列。
行SUBSTRING_INDEX(SUBSTRING_INDEX(record_number,'/',-2),'/',+1) *1 asc
将只获得/ /
之间的charchters,并将其转换为数字