2011-02-23 66 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