当前位置: 首页 > news >正文

openGauss关于日期的计算注意事项

一、场景复现
原使用oracle的项目组,今天反馈生产应用报了个错:
ERROR:interval_mul result month:0.000000,day: 2147493432.760000 overflow
image

Oracle中,经常使用类似的用法,对时间做计算:
image

二、原理分析
关于日期的加减计算,在oracle中得到的结果是number,代表的是两个日期之间的天数差值:

image

但是在openGauss中,默认返回的数据类型是interval:
image

关于interval 类型,是用于表示时间的间隔或时间段,可以存储年、月、日、小时、分钟、秒等单位的时间量:
image

比如可以操作常见的日期计算:
image

日期的提取:
image
image

关于代码中,interval*float8或者interval*int 这类操作有限制:
image

Interval的月和天字段是int32类型,ans_day 或 ans_month 就不能超过 ±2^31-1 (±2147483647).
image

例子中interval*int,返回值也还是interval,就会受到这个大小的约束。

三、推荐解决方案
将日期转换为整数,再做计算
image
image

http://www.sczhlp.com/news/314.html

相关文章:

  • 一文带你全面了解教师资格证
  • 小飞标签
  • P6246 邮局题解
  • [lnsyoj2085] 底垫
  • 病从口入,祸从口出
  • 7.28
  • 基于 PyTorch 的端到端验证码识别系统设计与实现
  • Linux安装 MYSQL
  • Groovy注入
  • P1545 Dividing the Path G(线段树+动态规划)
  • .NET4通过HTTP操作MINIO
  • Gitee:重塑中国企业级研发基础设施的三大战略支点
  • SAP生产订单报工的“最终确认”、“结清未清预留”,你真弄清楚了吗?
  • 基于图像处理与SVM的验证码识别系统实现
  • 基于因子图与和积算法的MATLAB实现
  • 【文献阅读】AnyEdit:编辑语言模型中编码的任何知识
  • Web前端入门第 82 问:JavaScript cookie 有大小限制吗?溢出会怎样?
  • 二分
  • lazarus无法编译Linux下的动态库
  • 微信小程序提示不在合法域名问题
  • Clop勒索团伙针对MoveIt Transfer软件的大规模攻击活动分析
  • 语音解耦技术推动语音AI的多样性与包容性
  • 银河麒麟V10离线安装 tomcat 9 记录
  • fiddler篡改数据
  • Docker
  • SpringMVC具体的工作流程
  • SketchUp 2021+必备插件|AFU321 v5.5.6安装与使用说明
  • SketchUp纹理神器:Architextures插件安装与使用教程(图文详解)
  • redis-基本使用
  • nepCTF2025 pwn题解