postgresql 在SQL中:如何将小时和分钟(作为整数存储在单独的列中)与时间戳的日期部分联系起来?

dojqjjoe  于 2023-04-20  发布在  PostgreSQL
关注(0)|答案(1)|浏览(167)

我正在构建一个Grafana Jmeter 板,我需要在其中应用日期过滤器。
在构建分析时,我使用SQL查询Postgres数据库,日期如下所示:
| 身份证|timestamp列|开始时间|结束时间|
| --------------|--------------|--------------|--------------|
| 1|2023-04-16 16:00:00.000|一千四|一九○ ○年|
| 二|2023-04-17 16:00:00.000|一百|九百|
我希望输出如下,以便我能够将其用作过滤器:
| 身份证|new_timestamp_start|new_timestamp_end|
| --------------|--------------|--------------|
| 1|2023-04-16 14:00:00.000|2023-04-16 19:00:00.000|
| 二|2023-04-17 01:00:00.000|2023-04-17 09:00:00.000|
timestamp列的类型为 timestamp,start_time和end_time列的类型为 int,请注意,时间0100和0900因此被存储为100和900。
超级感谢所有的帮助!
问候

vmdwslir

vmdwslir1#

下面是一种使用日期和间隔算法的方法:

select id,
    date_trunc('day', timestamp_column) 
        + start_time / 100 * interval '1 hour' 
        + start_time % 100 * interval '1' minute as new_timestamp_start,
    date_trunc('day', timestamp_column) 
        + end_time   / 100 * interval '1 hour' 
        + end_time   % 100 * interval '1' minute as new_timestamp_end
from mytable

其思想是使用除法和取模将整数列分解为小时和分钟,然后执行日期运算。

Demo on DB Fiddle-我稍微修改了数据,所以分钟也起作用:

身份证new_timestamp_startnew_timestamp_end
12023-04-16 14:00:002023-04-16 19:00:00
12023-04-16 01:00:002023-04-16 09:50:00

相关问题