通过添加月份来计算Postgres中的日期?

时间:2011-05-06 09:23:07

标签: postgresql

我有一个postgres表,其中包含以下字段

起始日期,持续时间

持续时间包含任意数月,因此要计算结束日期,请将持续时间的月份添加到开始日期。现在我想用postgres查询做这样的事情。

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)编译 < / p>

2 个答案:

答案 0 :(得分:17)

尝试:

(start_date + (duration * '1 month'::INTERVAL)) < '2010-05-12'

(start_date + (duration || ' month')::INTERVAL) < '2010-05-12'

更多信息:Date/Time Functions and Operators

答案 1 :(得分:1)

您可能会发现这篇文章很有用:PostgreSQL: month := interval '30 days';

此链接:http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL,更具体地说是“与DATETIME,DATE和INTERVAL VALUES一起工作”一节。