如果 Amazon Redshift 中的日期差异为负,则增加 120 分钟

Adding 120 minutes if date diff is negative in Amazon Redshift

我正在对一个人购买一件商品所需的时间进行分组,从会话时间到购买时间。在某些情况下,由于时区的原因,购买时间比应有的时间多了 120 分钟,在这种情况下,我想加上 120 分钟,然后像这样分组:

CASE
    WHEN date_diff('minute'::character varying::text, sessions.event_time, sales.event_time) < 0 AND sales.event_time IS NOT NULL THEN '0. 0'::character varying
    WHEN date_diff('minute'::character varying::text, sessions.event_time, sales.event_time) <= 5 AND sales.event_time IS NOT NULL THEN '1. 0-5min'::character varying
    ELSE 'no sale'::character varying
END AS grouped_session_to_sale, 

而且由于时差 2 小时,我得到了很多 0.0 组,我需要在 sales.event_time 上增加 120 分钟,我试过这个:

CASE
    WHEN date_diff('minute'::character varying::text, sessions.event_time, sales.event_time) < 0 
    THEN sales.event_time::numeric+120::text
    ELSE sales.event_time
END as sales.event_time,

CASE
    WHEN date_diff('minute'::character varying::text, sessions.event_time, sales.event_time) < 0 AND sales.event_time IS NOT NULL THEN '0. 0'::character varying
    WHEN date_diff('minute'::character varying::text, sessions.event_time, sales.event_time) <= 5 AND sales.event_time IS NOT NULL THEN '1. 0-5min'::character varying
    ELSE 'no sale'::character varying
END AS grouped_session_to_sale

但是我收到一个非常无用的错误:

SQL Error [500310] [42601]: Amazon Invalid operation: syntax error at or near "." Position: 3346;

我怎样才能达到这样的结果?

您不能将第一个 CASE 语句的输出分配给 sales.event_time - “END as sales.event_time”。这意味着您正在从 select 内部更改源数据。您可以将此输出称为“new_event_time”而不带“..