ORDER BY (case when PaddedTime like '% am' then 1 else 2 end), PaddedTime
因此,您的完整陈述如下所示:
SELECT TimeString, iif(length(TimesString) = 7, '0' || TimesString, TimesString) AS PaddedTime from table ORDER BY (case when PaddedTime like '% am' then 1 else 2 end), PaddedTime
1条答案
按热度按时间idfiyjo81#
不幸的是,Sqlite没有提供任何简洁的内置解决方案来解决这个问题。实际上,没有任何规定来满足时间字符串中的AM/PM。但是,您可以使用一些变通方法,尽管它确实涉及到将时间字符串转换为可以操作的格式。首先,您必须用前导零填充任何小于10小时的字符串。使用iif语句就足够简单了:
接下来,您需要调整AM/PM的时间字符串。此问题已在以下答案中详细说明:How to order by date/time with AM/PM in SQLITE。但简单地说,它建议先用case语句按am/pm排序,然后再按时间排序:
因此,您的完整陈述如下所示:
然而,在时间是12 AM的情况下,这将失败。在这里,您必须添加一个额外的iif语句来将“12”转换为“00”。我将让您尝试一下,但如果您遇到困难,请告诉我,我会帮助您