如何在MySql中订购非整数记录?

时间:2018-02-01 20:01:40

标签: php html mysql phpmyadmin

我正在尝试按DESC顺序订购一些MySQL记录,并添加最后一条记录。

这些是我的记录,它们都存储为字符串:

1/2017
1/2018
2/2017
2/2018
3/2017

我想获得1/2018的价值。记录基于当前年份 最后添加的记录是1/2018,下一个记录是2/2018,依此类推。

这是我的疑问:

SELECT NoControl FROM cita ORDER BY NoControl DESC LIMIT 1

但是我最后的记录是3/2017。

2 个答案:

答案 0 :(得分:2)

如果你有相同的模式m / yyyy你可以使用一些字符串操作函数,例如:

SELECT NoControl 
FROM cita 
ORDER BY right(NoControl,4), DESC left(NoControl,1) DESC  LIMIT 1

但是你应该避免将商店日期值作为字符串..

或将字符串转换为正确的日期

SELECT NoControl 
FROM cita 
ORDER BY str_to_date(NoControl,'%m/%Y') DESC LIMIT 1

答案 1 :(得分:1)

使用SUBSTRING_INDEX提取第一和第二部分,CAST为整数并排序:

SELECT str
FROM testdata
ORDER BY 
    CAST(SUBSTRING_INDEX(str, '/', -1) AS UNSIGNED) DESC,
    CAST(SUBSTRING_INDEX(str, '/',  1) AS UNSIGNED) DESC
LIMIT 0, 1

SQL Fiddle