2016-07-18 4 views
0

Я хочу знать, если это возможно, использовать функцию экстракта:PostgreSQL: вызов функции EXTRACT передавая в качестве аргумента одно поле запроса

EXTRACT(field from timestamp) 

Где поле это значение из запроса?

Пожалуйста, ознакомьтесь (упрощенный) пример:

SELECT c.name, EXTRACT(f.frecuency from NOW()) 
FROM contacts c 
INNER JOIN frecuencies f ON c.id = f.contact_id 

Из следующих таблиц:

 
contacts table: 
--------------------- 
| id | name  | 
--------------------- 
| 123 | Test  | 
--------------------- 

frecuencies table: 
--------------------------------- 
| id | contact_id | frecuency | 
--------------------------------- 
| 1 | 123  | DAY  | 
--------------------------------- 

Я сделал запрос (несколькими способами) и получил сообщение:

timestamp with time zone units "frecuency" not recognized 

Поэтому я хочу знать, существует ли какое-то обходное решение для этого.

Заранее спасибо.

PD: Если вы считаете, что вопрос название или тело необходимо улучшить, пожалуйста, вперед, я бы большое спасибо!

ответ

1

Просто используйте date_part который according to the documentation такой же, как EXTRACT, как в этом примере:

WITH units(u) AS (VALUES ('day')) 
SELECT date_part(u, current_timestamp) FROM units; 
┌───────────┐ 
│ date_part │ 
├───────────┤ 
│  18 │ 
└───────────┘ 
(1 row) 
+0

Спасибо @Laurenz, то есть то, что нужно! – Hernandcb