Informix SQL 如何提取两日期时间相减所得间隔中的整数天数
解决方案
你可以通过以下几种方式实现需求,优先推荐第一种,实现最简单性能最优:
- 直接转DATE类型相减(最优)
由于你的两个时间戳的时间部分固定为00:00:00,直接将两个字段转为DATE类型后相减,得到的结果就是整数天数:
select "Date1", "Date2", DATE("Date1") - DATE("Date2") as "TotalDaysDifference" from "mytable"
- 从间隔类型直接提取天数
如果你需要保留原间隔计算逻辑,也可以直接将间隔类型强转为天单位的间隔,再转整数即可:
select "Date1", "Date2", CAST( extend("Date1", year to fraction(5)) - extend("Date2", year to fraction(5)) AS INTERVAL DAY(9) TO DAY )::INTEGER as "TotalDaysDifference" from "mytable"
- 字符串截取方式(兼容特殊场景)
如果以上两种方式受环境限制不可用,也可以将间隔转成字符串后,截取空格前的部分转为整数:
select "Date1", "Date2", CAST( TRIM(SPLIT(TO_CHAR(extend("Date1", year to fraction(5)) - extend("Date2", year to fraction(5))), ' ')[1]) AS INTEGER ) as "TotalDaysDifference" from "mytable"
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

