Как добавить переменные минуты к данной дате?
У меня есть следующий запрос (я использую postgresql):
SELECT TIMESTAMP fecha_cita + cast((select tiempo_intervencion from cita_intervencion) as interval)
from cita;
То, что я делаю здесь, в основном берет дату типа '2001-09-28 01:00' из таблицы 'cita' (вот что такое fecha_cita), и я хочу добавить больше времени к этой полной дате, в данном случае 'tiempo_intervencion' это что-то вроде '120 минут', но эта информация находится в другой таблице, называемой 'cita_intervencion', проблема в том, что, поскольку это переменные даты и времени, а не фиксированная дата, такие вещи, как SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '120 minutes
у меня не работает, я получаю такие ошибки как:
ОШИБКА: синтаксическая ошибка в или около "fecha_cita" ЛИНИЯ 1: ВЫБЕРИТЕ TIMESTAMP fecha_cita + cast((выберите tiempo_intervenci...
ОШИБКА: невозможно привести тип d_entero_p к интервалу LINE 1: ...ct tiempo_intervencion из cita_intervencion) в качестве интервала) ...
Я посмотрел на Google для получения некоторой информации по этому вопросу, и я пытался следовать этому, но я не могу найти ничего, что может решить мою проблему.
2 ответа
Вам нужно объединение, а затем приведите строку к интервалу:
SELECT c.fecha_cita, fecha_cita + ci.tiempo_intervencion::interval
from cita c
join cita_intervencion ci on c.id = ci.cita_id;
Это предполагает, что есть некоторый столбец в cita_intervencion
что связывает это обратно с cita
Таблица. Если у вас действительно нет этого, вы можете сделать что-то вроде этого:
SELECT c.fecha_cita, fecha_cita + (select tiempo_intervencion::interval from cita_intervencion)
from cita c
Но это будет работать только если cita_intervencion
содержит ровно одну строку
Приведение к интервалу будет работать, только если значения в tiempo_intervencion
следуйте правилам для интервала.
Вам не нужно timestamp
ключевое слово для столбцов, уже определенных как timestamp
это необходимо только для введения временной метки литерального (постоянного) значения.
SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL 'У меня 120 минут не работает
Это работает, если вы добавляете недостающие '
для интервала буквального:
SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '120 minutes'