输出中的postgreSQL增量数
我正在从我的postgresql>中提取三个值(服务器、区域、最大(日期)),但我想提取一个额外的第四个字段,它应该是1到第三个字段的数字相加。我无法使用日期添加函数,因为数据库中的日期字段定义为整数 日期类型(以DB为单位)输出中的postgreSQL增量数,postgresql,Postgresql,我正在从我的postgresql>中提取三个值(服务器、区域、最大(日期)),但我想提取一个额外的第四个字段,它应该是1到第三个字段的数字相加。我无法使用日期添加函数,因为数据库中的日期字段定义为整数 日期类型(以DB为单位) date|integer|not null 尝试使用强制转换和日期添加功能 MAX(s.date)::date + cast('1 day' as interval) 收到错误 所需输出 select server, region, max(alarm_date),
date|integer|not null
尝试使用强制转换和日期添加功能
MAX(s.date)::date + cast('1 day' as interval)
收到错误
所需输出
select server, region, max(alarm_date), next date from table .....
testserver, europe, 20190901, 20190902
testserver2, europe, 20191001, 20191002
下一个日期值应该是报警日期的加法。要将类似于
20190901的整数转换为日期,请使用
to_date(CAST(s.date AS text), 'YYYYMMDD')
将日期存储为那样的整数是个坏主意。使用date
数据类型将防止损坏的数据进入数据库,并使所有操作变得自然。要将20190901
之类的整数转换为日期,请使用
to_date(CAST(s.date AS text), 'YYYYMMDD')
将日期存储为那样的整数是个坏主意。使用日期
数据类型将防止损坏的数据进入数据库,并使所有操作变得自然。我想到的第一个解决方案:
select (20190901::varchar)::date + 1
输出2019-09-02作为类型日期
可以找到其他解决方案。我想到的第一个解决方案是:
select (20190901::varchar)::date + 1
输出2019-09-02作为类型日期
可以找到其他解决方案。添加1后,我是否可以在不使用-(连字符)的情况下获得输出这是一种糟糕的做法,正如其他用户所建议的那样。无论如何,要执行此操作:选择replace((截止日期(20190901::text,'YYYYMMDD')+1)::text,'-',''::integer
此操作将替换连字符并转换回整数。好像我是对的。。。您希望更新该值。您应该真正更改类型并避免这样做。在添加1后,我是否能够在不使用-(连字符)的情况下获得输出?正如其他用户所建议的,这是一种糟糕的做法。无论如何,要执行此操作:选择replace((截止日期(20190901::text,'YYYYMMDD')+1)::text,'-',''::integer
此操作将替换连字符并转换回整数。好像我是对的。。。您希望更新该值。您应该真正更改类型并避免这样做。有风险而且非常狡猾