我正在查询一个表,我正在尝试Order By
一个“时间”列,其时间格式为“1 - 2 pm”、“7 - 8 am”、“11 am - 12 pm”等。我m 不允许更改此列,但我想不出查询它的好方法,以便我可以通过asc
or正确排序desc
。我尝试查找位置或“am”或“pm”并使用 PostgreSLQ 子字符串方法,但我仍然遇到问题。
问问题
148 次
2 回答
2
在查询中添加 sortby 列
select blah
, case when timefield = "earlier than 1am" then 1
when timefield = "1-2 am" then 2
etc
else 20 end sortby
etc
order by sortby
于 2013-08-08T19:38:14.230 回答
1
我认为你可以这样做:
order by to_timestamp(time, 'HH a.m.');
这是一个例子:
select time, to_timestamp(time, 'HH a.m.')
from (select '1 p.m. - 2 p.m.' as time union all
select '9 a.m. - 10 a.m.' as time union all
select '11 a.m. - 12 p.m.' as time
) t
order by to_timestamp(time, 'HH a.m.');
于 2013-08-08T19:50:31.917 回答