关于trino中date

您所在的位置:网站首页 数据库日期相减计算天数公式 关于trino中date

关于trino中date

2024-07-12 09:22| 来源: 网络整理| 查看: 265

工作中遇到了一个问题,就是关于trino中的date_diff函数用来求两个timestamp类型(格式:2022-05-01 00:00:00)的时间相减后的天数,当时不知道,数据对不上,后来才发现是这个原因导致的。希望对大家有帮助。

请看示例:

示例1:这种情况没有问题,天数是对的

select date_diff('day',cast('2022-05-01 23:45:09' as TIMESTAMP), cast('2022-05-03 23:56:31' as timestamp)) ---------------结果:---------------- 2

示例2:这种情况就不对了,求出来的天数的0

select date_diff('day',cast('2022-05-01 23:45:09' as TIMESTAMP), cast('2022-05-02 03:56:31' as timestamp)); -------------结果:----------------- 0

有人认为这结果没有问题,是对的,就应该是0,这么说没有问题,因为考虑到小时,从小时算还不满24个小时,所以就没有到一天。但是,比如这么算:您是2021年10月20日租的房子,签的合同,是不是10月20日就生效了,房东会管你这个合同是10月20日几点签订的吗?不会对吧,那么2022年10月19日房子是不是最后一天了,2022年10月20日就是新合同的第一天,与上一份合同是不是差了一天呢?这么想不就有问题了吗??

结论:date_diff计算如示例2的情况是,会按小时去算,小时间隔为24小时的算间隔一天,不满24小时的算为间隔0天。

解决方案:转换为date类型,在相减,得到正确结果。

select date_diff('day',date(format_datetime(cast('2022-05-01 23:45:09' as TIMESTAMP),'yyyy-MM-dd')), date(format_datetime(cast('2022-05-02 03:56:31' as timestamp),'yyyy-MM-dd'))) ------------结果:------------------ 1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3