2011-02-23 70 views
0

我不能工作了如何将一个变量传递到像PostgreSQL的提取功能:传递给postgresql的日期extract()函数?

select 'day' as i; 
extract(i from a_date) 

,让我

ERROR: timestamp with time zone units "i" not recognized

如果我能传递一个字符串,提取(“天”从a_date),为什么不是一个变量?

+1

你能告诉我们整个脚本?您必须从SELECT中将结果提取到需要此结果的下一个查询中。或者这是关于pl/pgsql的? – 2011-02-23 07:07:00

+1

如果你正在编写一个函数,那么赋值操作要么是'SELECT INTO'我'天';''或'i:='天';'你的例子没有提供足够的上下文来正确回答问题。 – jmz 2011-02-23 09:25:13

+0

如何使用IN参数:select extract(a_date中的$ 1) - 产生语法错误 – Hendekagon 2011-02-23 23:42:22

回答

2

ANSI SQL不支持那里的参数。改用date_part函数。

http://www.postgresql.org/docs/9.0/interactive/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

 
postgres=# select extract(day from current_timestamp); 
date_part 
----------- 
     23 
(1 row) 

postgres=# select date_part('day', current_timestamp); 
date_part 
----------- 
     23 
(1 row) 
+0

ok,但如何传递变量?像select date_part(my_variable,current_timestamp); – Hendekagon 2011-02-23 23:27:12

+0

thankyou - date_part适用于变量 – Hendekagon 2011-02-24 00:03:48