1

Order Byテーブルのクエリを実行していて、時刻が「午後 1 時から午後 2 時」、「午前 7 時から 8 時」、「午前 11 時から午後 12 時」などの形式の「時間」列を取得しようとしています。 m はこの列を変更することを許可されていませんが、ascまたはで適切に順序付けできるようにクエリを実行する良い方法が思いつきませんdesc。位置または「午前」または「午後」を探して、PostgreSLQ 部分文字列メソッドを使用しようとしましたが、まだ問題が発生しています。

4

2 に答える 2

2

クエリに並べ替え列を追加する

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 に答える