赞
踩
大家好久不见,话不多说直接说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,此处不再一一举例
以上关于时间的函数希望能帮助到大家。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。