PostgreSQL 关于时间复杂函数详解(长期更)

  大家好久不见,话不多说直接说QA

在开发业务中,有时候巧妙借助sql的优势能降低开发难度的一般,接下来我将一一举例我在开发中的遇到的相关案例

1.转化为秒

SELECT date_part('epoch', TIMESTAMP '2021-08-17 21:00:00' - TIMESTAMP '2021-08-17 20:00:00') 秒; --结果:3600

2.转化为分

SELECT date_part('epoch', TIMESTAMP '2021-08-17 21:00:00' - TIMESTAMP '2021-08-17 20:00:00')/60 分钟; --结果:60

3.转化为时

SELECT date_part('epoch', TIMESTAMP '2021-08-17 21:00:00' - TIMESTAMP '2021-08-17 20:00:00')/60/60 小时; --结果:1

4.转化为天

SELECT date_part('epoch', TIMESTAMP '2022-08-17 20:00:00' - TIMESTAMP '2021-08-17 20:00:00')/60/60/24 天; --结果:365,

如果不需要精确到小数有更简单的: SELECT date '2022-08-17' - date '2021-08-17' 天; --结果:365

5.这是最基本的,接下来我们将难度稍微提升一点,将区间时间精确到小数位,并且是自动四舍五入的:

        CAST ( date_part( 'epoch', bw.result_time - bw.reach_time ) / 60 AS DECIMAL ( 18, 2 ) ) AS wait_time

解释:精确到小数位需要加cast这个函数将数据包进去,其次就是 在数据后面加上 AS DECIMAL(18,2)前面的18是长度,后面的2是小数精确的长度。

注:上述只能做时分秒天,并不能做年月,因为不确定性,如有相关业务需要使用特定的方式

如:

SELECT date_part('year', age(TIMESTAMP '2023-02-17 20:00:00' , TIMESTAMP '2021-08-17 20:00:00'))*12 + date_part('month', age(TIMESTAMP '2023-02-17 20:00:00' , TIMESTAMP '2021-08-17 20:00:00')) 月;
--结果:18
SELECT date_part('year', age(TIMESTAMP '2023-02-17 20:00:00' , TIMESTAMP '2021-08-17 20:00:00')) + date_part('month', age(TIMESTAMP '2023-02-17 20:00:00' , TIMESTAMP '2021-08-17 20:00:00'))/12 年;
--结果:1.5

以上示例均可使用extract函数,如:

SELECT extract(EPOCH FROM TIMESTAMP '2021-08-17 21:00:00' - TIMESTAMP '2021-08-17 20:00:00') 秒;
--结果:3600,此处不再一一举例

   以上关于时间的函数希望能帮助到大家。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值