我有下一个查询(我使用postgresql):
SELECT TIMESTAMP fecha_cita + cast((select tiempo_intervencion from cita_intervencion) as interval)
from cita;
我在这里做的基本上是这样的约会' 2001-09-28 01:00'来自' cita' table(那是什么fecha_cita)我想在这个完整的日期添加更多的时间,在这种情况下' tiempo_intervencion'类似于“120分钟”的事情。但是这个信息在另一个名为“cita_intervencion”的表格中,问题是由于这些是变量的日期和时间而不是固定的日期,SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '120 minutes
之类的东西对我来说不起作用,我得到的错误如下:
错误:语法错误在或附近" fecha_cita" 第1行:SELECT TIMESTAMP fecha_cita + cast((选择tiempo_intervenci ...
错误:无法将类型d_entero_p转换为间隔 第1行:...来自cita_intervencion的ct tiempo_intervencion)作为间隔)......
我已经在google上查找了有关此内容的一些信息,我试图关注this,但我无法找到任何可以解决我问题的内容。
答案 0 :(得分:0)
您需要一个连接,然后将字符串转换为间隔:
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'
答案 1 :(得分:-2)
您可以使用:
select DATEADD(MINUTE,120,GETDATE())