job*_*i88 10 postgresql function postgresql-9.1 postgresql-9.2
在oracle中我可以发现没有:使用MONTHS_BETWEEN函数之间的几个月.
在postgres我使用提取功能.eg.like
select
extract(year from age(current_date, '2012-12-09')) * 12
+
extract(month from age(current_date, '2012-12-09'))
Run Code Online (Sandbox Code Playgroud)
在postgres中还有其他方法(内置函数)吗?
ara*_*nid 10
这很容易在PostgreSQL中重新实现,只需使用SQL函数来整理你已经拥有的东西:
create function months_of(interval)
returns int strict immutable language sql as $$
select extract(years from $1)::int * 12 + extract(month from $1)::int
$$;
create function months_between(date, date)
returns int strict immutable language sql as $$
select abs(months_of(age($1, $2)))
$$;
Run Code Online (Sandbox Code Playgroud)
现在select months_between('1978-06-20', '2011-12-09')
生产401.
不幸的是,似乎不是,因为返回模 12extract(month ...)
的月数。
您可以做一个小小的简化;删除第一个参数age()
- 默认是年龄current_date
,所以这两个是等价的:
age(current_date, '2012-12-09')
age('2012-12-09')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12966 次 |
最近记录: |