Datetime 如果亚马逊红移中日期差为负数,则增加120分钟

Datetime 如果亚马逊红移中日期差为负数,则增加120分钟,datetime,amazon-redshift,date-arithmetic,Datetime,Amazon Redshift,Date Arithmetic,我将一个人购买一件物品所需的时间分组,从会话时间到购买时间。有些情况下,由于时区的原因,购买时间比应该的时间长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

我将一个人购买一件物品所需的时间分组,从会话时间到购买时间。有些情况下,由于时区的原因,购买时间比应该的时间长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, 
但我得到了一个非常缺乏信息的错误:

SQL错误[500310][42601]:Amazon无效操作:在“”处或附近出现语法错误 职位:3346


如何实现这样的结果?

您不能将第一个案例语句的输出分配给sales.event\u time-“结束为sales.event\u time”。这意味着您正在从select内部更改源数据。您可以将此输出称为“new\u event\u time”,不带“.”。

您不能将第一个CASE语句的输出分配给sales.event\u time-“结束为sales.event\u time”。这意味着您正在从select内部更改源数据。您可以将此输出称为“new\u event\u time”,不带“.”。

旁注:在红移中,
字符变化
文本
相同,因此您最好使用
文本
,因为它较短。另外,
'minute'::字符变化::text
可以是
minute
'0。0'::字符变化
可以是
'0。0'
。您知道它在抱怨哪个时段(
)了吗?尝试删除线,直到它消失,你会发现。它可能是引号中的文本(
'0.0'
)。在我添加逻辑以增加数字后,该部分工作,然后它停止工作。我不确定我是否可以像现在这样处理另一个表的值。旁注:在红移中,
字符变化
文本
相同,因此您最好使用
文本
,因为它较短。另外,
'minute'::字符变化::text
可以是
minute
'0。0'::字符变化
可以是
'0。0'
。您知道它在抱怨哪个时段(
)了吗?尝试删除线,直到它消失,你会发现。它可能是引号中的文本(
'0.0'
)。在我添加逻辑以增加数字后,该部分工作,然后它停止工作。我不确定是否可以像现在这样在案例中处理另一个表的值。
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