如何添加时间变量?

发布于 2025-01-14 15:38:57 字数 648 浏览 2 评论 0原文

我想对每首歌曲的持续时间求和并返回结果(ret 变量)。问题是我找不到添加时间变量的方法。如何实现这一目标?

$$
declare
    ret time;
    listeners record;
    duration record;
    vc varchar;
    listener_id int;
begin
ret:='00:00:00';
    for listeners in select * from listener loop
        if listeners.nick=$1 then
            listener_id :=listeners.id;
            for duration in select song.duration as dur from playlist, song where song.id=playlist.song_id and listeners.id=playlist.listener_id loop
                ret := ret + duration.dur; //how to add time variables?
            end loop;
        end if;
    end loop;
    return ret;
end;
$$

I want to sum every song duration and return the outcome (ret variable). The problem is that I can't find a way to add time variables. How to achieve that?

$
declare
    ret time;
    listeners record;
    duration record;
    vc varchar;
    listener_id int;
begin
ret:='00:00:00';
    for listeners in select * from listener loop
        if listeners.nick=$1 then
            listener_id :=listeners.id;
            for duration in select song.duration as dur from playlist, song where song.id=playlist.song_id and listeners.id=playlist.listener_id loop
                ret := ret + duration.dur; //how to add time variables?
            end loop;
        end if;
    end loop;
    return ret;
end;
$

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫﹏色ふ单纯 2025-01-21 15:38:57

您可以使用数据类型 interval 来表示时间间隔。但是你还没有学习SQL:编写一个连接而不是实现嵌套循环的过程代码:

SELECT sum(song.dur)
FROM listeners AS l
   JOIN playlist AS p
      ON l.id = p.listener_id
   JOIN song
      ON song.id = p.song_id;

我假设utworsong是相同的,否则你的代码不会使很有道理。

You would use data type interval for time intervals. But you have yet to learn SQL: write a join instead of procedural code implementing a nested loop:

SELECT sum(song.dur)
FROM listeners AS l
   JOIN playlist AS p
      ON l.id = p.listener_id
   JOIN song
      ON song.id = p.song_id;

I assume that utwor and song are the same, otherwise your code does not make much sense.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文