如何添加时间变量?
How to add time variables?
我想对每首歌曲的持续时间和 return 结果求和(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= 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;
$$
您将使用数据类型 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;
我假设utwor
和song
是相同的,否则你的代码没有多大意义。
我想对每首歌曲的持续时间和 return 结果求和(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= 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;
$$
您将使用数据类型 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;
我假设utwor
和song
是相同的,否则你的代码没有多大意义。