当前位置:   article > 正文

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

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是小数精确的长度。

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

如:

  1. 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')) 月;
  2. --结果:18
  3. 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 年;
  4. --结果:1.5

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

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

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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/739693
推荐阅读
相关标签
  

闽ICP备14008679号