Calculating a date in Postgres by adding months?
我有一个postgres表,其中包含以下字段
起始日期,持续时间
持续时间包含任意数月,因此要计算结束日期,请将持续时间的月份添加到开始日期。 现在我想用postgres查询做这样的事情。
1 2 3 4 | SELECT * FROM TABLE WHERE start_date > '2010-05-12' AND (start_date + duration) < '2010-05-12' |
这是可能的,如何正确的语法?
我的postgres的版本是x86_64-redhat-linux-gnu上的PostgreSQL 8.1.22,由GCC gcc(GCC)4.1.2 20080704编译(Red Hat 4.1.2-48)
尝试:
1 | (start_date + (duration * '1 month'::INTERVAL)) < '2010-05-12' |
要么
1 | (start_date + (duration || ' month')::INTERVAL) < '2010-05-12' |
更多信息:日期/时间函数和运算符
你可能会发现这篇文章很有用:PostgreSQL:month:= interval '30 days';
此链接:http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL,更具体地说是"使用DATETIME,DATE和INTERVAL VALUES工作"一节。