Amazon redshift 在红移中创建timestampdiif函数
我试图在redshift中创建一个函数来精确计算两个日期之间的间隔,就像MySQL中的timestampdiff一样 我正在运行附加的脚本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
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