PostgreSQL 中的 IsFinite()、justify_days() 和 justify_hours()函数
先决条件: PostgreSQL – 简介
1. PostgreSQL 中的 IsFinite()函数:
PostgreSQL 中的此函数有助于测试有限的日期、时间戳和间隔。由于我们知道 Postgre 支持具有无穷大或负无穷大值的时间戳,因此这里 IsFinite()函数起着重要作用。该函数将测试给定的数据或时间戳,并相应地返回 true 或 false。
句法 -
isfinite(date)
isfinite(timestamp)
isfinite(interval)
参数 -
该函数只接受一个参数,可以是以下任一参数 -
- 日期
- 时间戳
- 间隔
返回 -
如果给定的日期/时间戳/间隔是有限的,则该函数将返回“True”或“t”,否则返回“False”或“f”。
示例 1 –
使用日期“2021-09-13”检查 IsFinite()函数的工作
SELECT isfinite(date '2021-09-13');
输出——真
由于日期“2021-09-13”不是无限的,所以函数将返回True。
示例 2 –
使用时间戳“2021-09-13 12:15:05”检查 IsFinite()函数的工作
SELECT isfinite(timestamp '2021-09-13 12:15:05');
输出——真
由于时间戳“2021-09-13 12:15:05”不是无限的,所以函数会返回True。
示例 3 –
使用间隔“5 小时 15 分钟”检查 IsFinite()函数的工作
SELECT isfinite(interval '5 hours 15 minutes');
输出——真
由于间隔“5 小时 15 分钟”不是无限的,因此该函数将返回 True。
示例 4 –
使用“Infinity”常量检查 IsFinite()函数的工作
SELECT isfinite('infinity'::timestamp);
输出 –错误
由于无限常量作为参数传递,因此该函数将返回 False。
示例 5 –
使用“-Infinity”(负无穷大)常量检查 IsFinite()函数的工作
SELECT isfinite('-infinity'::timestamp);
输出 –错误
由于 -infinite 常量作为参数传递,因此该函数将返回 False。
2. PostgreSQL 中的 justify_days()函数:
PostgreSQL 中的此函数有助于调整间隔值,即该函数可以将 30 天的时间段表示为月。就像如果用户将 30 天作为参数传递,该函数将返回 1 mon,依此类推。
句法 -
justify_days(interval)
参数 -
该函数只接受一个参数
- 间隔 -
可以用月表示的某个区间 - 退货——
该函数将转换并以月为单位返回给定的间隔。
示例 1 –
使用间隔“90 天”检查 justify_days () 函数的工作
SELECT justify_days(interval '90 days');
输出 – 3 mon
由于 30 天等于 1 个月,因此 90 天将表示为 3 个月。
示例 2 –
当间隔不是 30 的函数倍数时,检查 justify_days() 函数的工作
以35天为间隔。
SELECT justify_days(interval '35 days');
输出 – 1 月 5 天
由于间隔不是 30 的完美倍数,因此结果将以月和日的形式显示。
示例 3 –
检查justify_days ()函数在间隔小于 30 天时的工作情况
SELECT justify_days(interval '14 days');
产出 – 14 天
由于给定的间隔是 14 天,小于 30,所以输出将保持 14 天。
示例 4 –
检查justify_days ()函数在时间也随着时间间隔过去的情况下的工作情况
1.以50天40分钟为间隔。
SELECT justify_days(interval '50 days 40 minutes');
输出 – 1 月 20 天 00:40:00
2. 间隔为160天2小时40分59秒。
SELECT justify_days(interval '160 days 2 hours 40 minutes 59 seconds');
输出 – 5 星期一 10 天 02:40:59
由于时间也以间隔传递,因此输出以 HH:MM:SS 格式显示月、日和时间。
3. justify_hours()函数:
PostgreSQL 中的此函数有助于调整间隔值,即该函数可以将 24 小时时间段表示为天。就像如果用户将 24 小时作为参数传递,该函数将返回 1 天,依此类推。
句法 -
justify_hours(interval)
参数 -
该函数只接受一个参数,
- 间隔 -
可以用天表示的某个时间间隔 - 退货——
该函数将转换并以天为单位返回给定的间隔。
示例 1 –
使用间隔“72 小时”检查 justify_hours() 函数的工作
SELECT justify_hours(interval '72 hours');
输出 – 3 天
由于 24 小时等于 1 天,因此 72 小时将表示为 3 天。
示例 2 –
检查justify_hours ()函数在间隔小于 24 小时时的工作情况
SELECT justify_hours(interval '14 hours');
输出 – 14:00:00
由于给定的时间间隔是 14 小时,小于 24,因此输出将采用 HH:MM:SS 格式。
示例 3 –
检查justify_hours ()函数在间隔为秒、分和月形式时的工作情况。
1.以5.53个月为间隔。
SELECT justify_hours(interval '5.53 months');
输出 – 5 星期一 15 天 21:36:00
2. 以300 小时 58 分钟为间隔。
SELECT justify_hours(interval '300 hours 58 minutes');
输出 – 12 天 12:58:00
3. 以3000 小时 10 分 20 秒为间隔。
SELECT justify_hours(interval '3000 hours 10 minutes 20 seconds');
输出 – 125 天 00:10:20
输出将以 HH:MM:SS 格式以月、日和时间显示。