如何将变量分钟添加到给定日期?

时间:2016-08-24 14:15:02

标签: sql postgresql date

我有下一个查询(我使用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,但我无法找到任何可以解决我问题的内容。

2 个答案:

答案 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())