You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关系代数:日期差值计算函数选择及筛选错误解决

解决关系代数中日期差值筛选的问题

这个问题在处理日期类型的关系代数操作里挺常见的——你直接用减法运算符(或者sub函数)去减两个日期类型的值,自然会报错,因为这类算术函数只认数值类型参数,不认日期类型。

针对你的需求,你需要用专门的日期差值计算函数,最通用的就是DATEDIFF(不同实现里可能写法略有差异,比如DATE_DIFF),它能直接计算两个日期之间的天数差,返回的是数值类型,这样就能和3做比较了。

正确的选择操作表达式

σ DATEDIFF(day, StartDate, EndDate) > 3 (Residence)

函数参数说明

  • 第一个参数day指定了差值的计算单位是“天”,确保我们得到的是两个日期之间的天数间隔
  • 第二个参数是起始日期StartDate,第三个是结束日期EndDate,函数会返回EndDate - StartDate的天数差(注意有些实现可能参数顺序反过来,要是运行报错可以调整顺序试试)

结合你的数据集验证

拿你给出的记录举例:

  • 记录2(UID=2, HID=1):2022-03-07 - 2022-03-03 = 4天,满足>3的条件,会被筛选出来
  • 记录1(UID=1, HID=1):差值是3天,不满足条件,会被排除
  • 所有EndDate在2022-04月的记录,差值都远大于3天,都会被选中

如果你的在线编辑器不认DATEDIFF,可以看看它的内置函数文档,大概率会有类似功能的日期差函数,核心思路就是把日期类型转换成可计算的数值天数差,再做比较。

内容的提问来源于stack exchange,提问作者Nicat

火山引擎 最新活动