我试图使用add_month函数,但收到错误。我想获得[CAL_DATE - 13个月]和[CAL_DATE]之间的访问次数。日期的格式如下:2007-14,2010-05,2009-04等等。这是我得到的错误“2009-11-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
将其强制转换为::date
。然后一个to_char
将add_months
的结果转换回你的YYYY-MM格式。
或者,由于add_months
在这里并没有真正对你有用,只需使用PostgreSQL间隔进行月份调整:
to_char((cal_date || '-01')::date - interval '13 months', 'yyyy-mm')