在MySQL中,根据数字和年份按升序对值进行排序.最古老的年份和最小的数值意味着该记录在asc中排名第一



我正在尝试根据列值对MySQL表数据进行排序。

created_atupdated_at2022-10-2420:35:03
id record_number
1 2022年4月 2022-10-24 20:34:25 2022-0-24 20:34:55
3 2021年6月 2022-10-24 20: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,并将其转换为数字

相关内容

最新更新