gpt4 book ai didi

sql - 将日期范围更改为具有离散日期的新行

转载 作者:行者123 更新时间:2023-11-29 11:56:54 25 4
gpt4 key购买 nike

我有一个表,其中包含 namelocationstart_dateend_date。我希望将这些包含日期范围的行转换为离散日期的行,同时保持相应的行信息不变。

示例:

Name1, Location1, 2015-4-01, 2015-4-04

变成:

Name1, Location1, 2015-4-01
Name1, Location1, 2015-4-02
Name1, Location1, 2015-4-03
Name1, Location1, 2015-4-04

我想我需要使用 PostgreSQL 函数将其创建为一个新表。

最佳答案

创建一个包含三个必需列的新表:

CREATE TABLE new_tbl (
nam varchar,
loc varchar,
dt date);

由于您希望新表中的记录在 start_date - end_date 范围内以一天为间隔,包括在内,最简单的解决方案是从您的日期:

generate_series(start_date::timestamp, end_date::timestamp, '1 day')

这你可以简单地在新表上插入一个 INSERT 语句:

INSERT INTO new_tbl
SELECT nam, loc, generate_series(start_date::timestamp, end_date::timestamp, '1 day')::date
FROM old_tbl;

由于 generate_series 函数使用 timestamp 参数,您需要明确地转换您的 date,然后转换生成的 timestamp 回到 date 以匹配您的列定义。

关于sql - 将日期范围更改为具有离散日期的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com