Amazon redshift 在红移中创建timestampdiif函数

Amazon redshift 在红移中创建timestampdiif函数,amazon-redshift,Amazon Redshift,我试图在redshift中创建一个函数来精确计算两个日期之间的间隔,就像MySQL中的timestampdiff一样 我正在运行附加的脚本 CREATE FUNCTION public.timestampdiff (a text,b timestamp, c timestamp ) RETURNS INT AS $$ BEGIN case when a=second then datediff(second,b,c) when a=minute then date

我试图在redshift中创建一个函数来精确计算两个日期之间的间隔,就像MySQL中的timestampdiff一样

我正在运行附加的脚本

CREATE FUNCTION public.timestampdiff (a text,b timestamp, c timestamp )
   RETURNS INT
AS $$
BEGIN
    case when a=second then datediff(second,b,c)
         when a=minute then datediff(second,b,c)/60
         when a=hour then datediff(second,b,c)/(60*60)
         when a=day then datediff(second,b,c)/(60*60*24)
         when a=week then datediff(second,b,c)/(60*60*24*7)
         when a=month then datediff(second,b,c)/(60*60*24*7*52) end;
END;
$$
   LANGUAGE SQL
   VOLATILE
但我收到了以下错误:


错误:语言sql不支持创建函数。

如果有人搜索到此,Amazon Redshift将具有此功能

指定希望函数操作的日期或时间戳部分。比如说,

select datediff(hours, '01-01-2019 8:30:00','01-01-2019 10:00:00');

date_diff
---------
2

第一:当使用
语言SQL
时,您不能让
开始。。结束
块。这些是用于PL/pgSQL的。第二:对于
SQL
函数,你需要某种
SELECT
,你不能只写
case…
我不知道红移,但在Postgres中没有函数
datediff
你会使用
b-c
返回
间隔。如果您需要,例如,在几秒钟内,您可以使用
extract(epoch from(b-c))
hi,谢谢,但是您能纠正一个例子吗,redshift有datediff函数,它的语法与MySQL相同,Amazon redshift(大部分)与PostgreSQL兼容。在PostgreSQL中,可以减去两个时间戳以获得
间隔
,该间隔可以以多种方式使用。
select datediff(hours, '01-01-2019 8:30:00','01-01-2019 10:00:00');

date_diff
---------
2