Dav*_*vis 1 postgresql query-optimization
在Pavel的页面上有以下功能:
CREATE OR REPLACE FUNCTION makedate(year int, dayofyear int)
RETURNS date AS $$
SELECT (date '0001-01-01' + ($1 - 1) * interval '1 year' + ($2 - 1) * interval '1 day'):: date
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
makedate(y.year,1)
Run Code Online (Sandbox Code Playgroud)
PostgreSQL在给定年份的1月1日创建日期的最快方法是什么?
帕维尔的功能会让我相信它是:
date '0001-01-01' + y.year * interval '1 year' + interval '1 day';
Run Code Online (Sandbox Code Playgroud)
我的想法更像是:
to_date( y.year||'-1-1', 'YYYY-MM-DD');
Run Code Online (Sandbox Code Playgroud)
我正在寻找使用PostgreSQL 8.4的最快方式.(使用日期函数的查询可以选择100,000到100万条记录,因此需要速度.)
谢谢!
我会使用以下内容,因为年份是持有年份的变量,而不是使用函数:
(year || '-01-01')::date
Run Code Online (Sandbox Code Playgroud)
顺便说一句.我无法相信这种转变是你的瓶颈.但也许你应该看看generate_series(我不知道你的用例).
select current_date + s.a as dates from generate_series(0,14,7) as s(a);
dates
------------
2004-02-05
2004-02-12
2004-02-19
(3 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5978 次 |
| 最近记录: |