我必须找出是否在创建后90分钟内,90分钟后但同一天以及之后的几天下了订单。
我使用了case when语句:
订单<= 90则' 90分钟内'等
在什么情况下可以在90分钟之后但在同一天内使用when语句?
假设列order
具有数据类型时间戳,您可以尝试以下case ...
:
select id
, order_tm
, case when current_timestamp - order_tm < interval '90 minutes'
then 'within 90 minutes'
when current_date = order_tm::date
then 'same day, but >= 90 minutes ago'
else (extract ('day' from current_timestamp - order_tm))::text || ' days ago'
end "When Ordered"
from orders;
注意:使用order作为列名是一个非常糟糕的选择。它既是Postgres保留字,也是SQL标准保留字。虽然您目前可以这样做,但将来可能会发生变化,因为它已经记录了相当长的一段时间。最好使用保留字作为列名会导致混淆。