使用列值postgresql创建间隔

时间:2015-11-06 08:19:42

标签: sql postgresql

我有一个类似这样的查询

select days, date(date_event)  + interval '10' day from tbl_user_marketing_program as programtable 

现在代替' 10',我想添加"天"中的值。柱。我怎么能这样做?

我尝试了select user_id, date(date_event) + interval user_id day from tbl_user_marketing_program as programtable

然后我得到了以下错误

  

错误:语法错误时间或附近"日"   第1行:... ect user_id,date(date_event)+ interval user_id day from t ...

3 个答案:

答案 0 :(得分:7)

不幸的是,间隔的“数字”不能是任意表达式,它必须是字符串常量(这是一个奇怪的选择)。您需要使用一些解决方法:

select days, date(date_event) + (days * interval '1' day) 
from tbl_user_marketing_program as programtable 

但是date + integer也是直接支持的,在这种情况下单位是天。所以你也可以写:

select days, date(date_event) + days 
from tbl_user_marketing_program as programtable 

答案 1 :(得分:0)

您可以引用$var = "1.25"; $whole = floor($var); // 1 $decimal = fmod($var, 1); //0.25

'10 days'

SqlFiddleDemo

如果要添加变量/列使用:

  

日期时间+变量* INTERVAL'1天'

select days, date(date_event)  + interval '10 days'
from tbl_user_marketing_program as programtable 

SqlFiddleDemo

答案 2 :(得分:0)

如果days列是整数,则首先将其转换为区间类型:

select days, date(date_event)  + cast(days as interval day(7))
from tbl_user_marketing_program as programtable