我正在使用postgreSQL-pgAdmin。 我需要在session_users表中添加一项功能,该功能可以计算月中的用户资历。
我的代码是:
ALTER TABLE session_users ADD signup_seniority_attribute interval;
update session_users su set signup_seniority_attribute=
(select age(signup_date) from session_users su1 where su1.user_id=su.user_id
and is_the_account_master= 'N' group by su1.signup_date, su.signup_date);
我需要求助于几个月:例如3年4个月= 40个月
答案 0 :(得分:1)
假设其余查询正确无误,则应该可以使用date_part函数和一些数学运算来选择以月为单位的日期。像...
ALTER TABLE session_users ADD signup_seniority_attribute interval;
UPDATE session_users su
SET signup_seniority_attribute=
(SELECT(date_part('YEAR', age(su1.signup_date)) * 12) + date_part('MONTH', age(dob))
AS Age_in_months
FROM session_users su1
WHERE su1.user_id=su.user_id
AND is_the_account_master= 'N');
请注意,我只是在最后更改了子查询,没有测试其余的查询。
以下是一个单独的date_part和数学示例:Let's buy some apples!
答案 1 :(得分:0)
如果我正确回答了您的问题,则应考虑使用DATEDIFF函数。
答案 2 :(得分:0)
EXTRACT(year FROM age(now(),su.signup_date))*12 + EXTRACT(month FROM age(now(),su.signup_date))
此处有更多说明-http://www.lexykassan.com/coding-conundrums/calculating-months-between-dates-in-postgresql/