大佬教程收集整理的这篇文章主要介绍了Postgresql,根据另一列添加(年,月或日)到目前为止,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
表格是这样的,我会简单的说:
PRODUCT (varchar) WARRANTY (int) TYPE_WARRANTY (char) ( 'Y','M','D' ) -- Years,Months or Days CREATED_AT (datE)
举个例子:
PRODUCT | WARRANTY | TYPE_WARRANTY | CREATED_AT ------------------------------------------------------ 'PROD A' | 1 | 'Y' | '2014-01-01' 'PROD B' | 10 | 'M' | '2014-06-01' 'PROD C' | 30 | 'D' | '2014-01-01'
我需要的是一个查询,它将带给我这个:
PRODUCT | WARRANTY | TYPE_WARRANTY | CREATED_AT | WARRANTY_ENDS | DAYS ----------------------------------------------------------------------------- 'PROD C' | 30 | 'D' | '2014-01-01' | '2014-01-31' | -175 'PROD A' | 1 | 'Y' | '2014-01-01' | '2015-01-01' | 160 'PROD B' | 10 | 'M' | '2014-06-01' | '2015-04-01' | 250
我希望你能理解它
所以我需要的是选择所有产品并在保修期结束时订购,包括今天和该日期之间的天数.
我已经拥有的东西:
我知道如何获取日期,我知道如何将日期添加到日期,我现在需要的是一种使查询理解我想根据type_warranty列的值添加间隔的方法.
我在这里使用’1年’作为例子并且它有效但我需要它像“1个月”和“1天”一样动态地工作.
SELECT PRODUCT,WARRANTY,TYPE_WARRANTY,CREATED_AT,(CREATED_AT + (WARRANTY * '1 year'::INTERVAL)) as WARRANTY_ENDS,EXTRACT(day from age((CREATED_AT + '1 year',current_datE)) as days FROM table order by days;
这是有效的,但只有多年,当然,我不知道如何将’1年’转换为’1个月’或’1天’,具体取决于warranty_type
你有什么想法可以提供帮助吗?
以上是大佬教程为你收集整理的Postgresql,根据另一列添加(年,月或日)到目前为止全部内容,希望文章能够帮你解决Postgresql,根据另一列添加(年,月或日)到目前为止所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。