我有一个名为Start_End
的Vertica表,例如:
| name | Started | Ended |
------------------------------------
| Albert | 1970-01-16 | 1970-06-01 |
| Barry | 1992-05-01 | 1992-07-14 |
| Carol | 2001-03-16 | 2001-06-03 |
它大约有100,000行。
如何使用months_between
从Started
中减去Ended
?
结果表如下:
| name | Started | Ended | Month_diff |
-------------------------------------------------
| Albert | 1970-01-16 | 1970-06-01 | 4|
| Barry | 1992-05-01 | 1992-07-14 | 2|
| Carol | 2001-03-16 | 2001-06-03 | 2|
以下内容将添加一个空白列:
ALTER TABLE Start_End
ADD COLUMN Month_diff INTEGER
如何使用months_between
?
答案 0 :(得分:1)
您似乎想要两个日期之间的完整月份。它认为这是:
select months_between(date_trunc('month', ended), date_trunc('month', started)) - 1 as month_diff
答案 1 :(得分:1)
找出MONTHS_BETWEEN()的行为(何时返回INTEGER,何时返回FLOAT,每月的最后一天的行为等)是否是您所需要的。 否则,您可能想要首先DATE_TRUNC()这两个操作数,例如,如@Gordon Linoff建议的那样。或改用TIMESTAMPDIFF(month,...): https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/Date-Time/TIMESTAMPDIFF.htm?zoom_highlight=timestampdiff
也就是说,尝试以下尺寸:
ALTER TABLE start_end
ADD month_diff INTEGER DEFAULT MONTHS_BETWEEN(ended,started)
祝你好运...