首页 > 解决方案 > 红移 datediff() 与 date_diff()

问题描述

似乎 Redshift 支持两种可能的函数来计算两个类似DATE对象之间的时间间隔距离:DATEDIFF()& date_diff()。以下代码片段提供了此行为的示例:

SELECT datediff(DAYS,   '2021-01-01'::DATE, '2021-02-01'::DATE) AS datediff_interval_output
     , datediff('day',  '2021-01-01'::DATE, '2021-02-01'::DATE) AS datediff_str_literal_output
     , date_diff('day', '2021-01-01'::DATE, '2021-02-01'::DATE) AS date_diff_output
;

AWS 提供了有关DATEDIFF()的文档,但是date_diff()Redshift 或 PostgreSQL 文档中似乎没有记录。这两个函数之间的一个奇怪的区别是,DATEDIFF它将接受其第一个参数的原始间隔(例如DAY,,MONTHSECOND或字符串文字('day''month''second '),但date_diff()只接受字符串文字间隔表示。

我能找到的唯一参考是pg_catalogdate_diff()中的一个条目,它返回以下自动生成的定义:

CREATE FUNCTION date_diff(text, time with time zone, time with time zone) RETURNS bigint
    IMMUTABLE
    LANGUAGE internal AS
$$
begin
-- missing source code
end;
$$;

有没有人对函数的起源有更多的了解date_diff(),以及为什么它包含在 Redshift 中但没有记录?


注意:使用 Redshift 版本:1.0.25109

标签: amazon-redshift

解决方案


推荐阅读