我正在尝试使用 add_month 函数,但出现错误。我想获取 [CAL_DATE - 13 个月] 和 [CAL_DATE] 之间的访问次数。日期的格式如下:2007-14、2010-05、2009-04 等。这是我收到的错误“错误的时间戳外部表示 '2009-11”,这是我正在使用的代码。我似乎无法弄清楚这个问题。
CAL_DATE BETWEEN add_months(CAL_DATE,-13) AND CAL_DATE.
我正在使用 netezza 数据库。
我正在尝试使用 add_month 函数,但出现错误。我想获取 [CAL_DATE - 13 个月] 和 [CAL_DATE] 之间的访问次数。日期的格式如下:2007-14、2010-05、2009-04 等。这是我收到的错误“错误的时间戳外部表示 '2009-11”,这是我正在使用的代码。我似乎无法弄清楚这个问题。
CAL_DATE BETWEEN add_months(CAL_DATE,-13) AND CAL_DATE.
我正在使用 netezza 数据库。
大概add_months
需要一个日期作为它的第一个参数并返回一个日期。你没有日期,你有 YYYY-MM 字符串,所以你有两个问题:
add_months
不知道如何处理 YYYY-MM 字符串。如果你想使用,add_months
那么你必须给它一个日期并将它给你的日期转换为你的 YYYY-MM 字符串之一,如下所示:
to_char(add_months((cal_date || '-01')::date, -13), 'yyyy-mm')
附加-01
到您的字符串应该为您提供该月第一天的字符串表示形式,并且您应该能够将其转换为date
with ::date
。然后to_char
将结果转换add_months
回您的 YYYY-MM 格式。
或者,由于add_months
这里并没有真正为您做任何有用的事情,只需使用 PostgreSQL 间隔进行月份调整:
to_char((cal_date || '-01')::date - interval '13 months', 'yyyy-mm')