代码之家  ›  专栏  ›  技术社区  ›  jewstin

按函数排序的SQL

  •  0
  • jewstin  · 技术社区  · 6 年前

    SELECT start FROM scheduling 
    WHERE residentid='2'
    ORDER BY DATE_FORMAT(start,'%H:%i:%s') desc;
       ------- start is type VARCHAR(10)--------------
    
    '02:19PM'
    '9:25PM'
    '4:45PM'
    NULL
    '02:19PM'
    ''
    '02:25AM'

    我不明白为什么我的约会没有被正确的安排,我做的一切都是根据我发现的,但我仍然无法得到开始时间是在下降的顺序。如果你看到有一个晚上9:25,那么就有一个下午4:45,但是这是没有意义的,因为9:35在下午4:45之后,但是我也认为asc(提升)仍然不起作用。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Stofke    6 年前
    SELECT *  FROM scheduling
    ORDER BY STR_TO_DATE(REPLACE(REPLACE(start, 'AM', ' AM'), 'PM', ' PM'),'%l:%i %p') desc;
    

    更新了答案。

    sqlfiddle.com/#!9/f49d7b/18/0

        2
  •  0
  •   Michael Riley - AKA Gunny    6 年前

    试试这个:

    SELECT * FROM scheduling 
    WHERE residentid='2'
    ORDER BY DATE_FORMAT(start,'%H:%i:%s') desc;