дат и времени. Вот исходный формат.
Максимум что мы придумали, это datarange & timerange
Не не очень удобно трансформировать обратно из datarange в json.
Мб, кто то подскажет, как хранить периоды дат?
schedule: [
{
date: {
start: "10.03.2023",
end: "12.03.2023",
},
time: {
start: "08:00",
end: "10:30"
}
},
{
date: "13.03.2023",
time: {
start: "08:00",
end: "10:30"
}
},
{
date:"14.03.2023",
time: "08:00"
}
]
Выборка:
select
audit_periods.audit_id,
json_agg(json_build_object(
'date',
case
when upper(date) is null then
to_json(lower(date))
else
json_build_object(
'start', lower(date),
'end', upper(date)
)
end,
'time',
case
when upper(time) is null then
to_json(lower(time))
else
json_build_object(
'start', lower(time),
'end', upper(time)
)
end
))
from
audit_periods
group by
audit_periods.audit_id
Начало — timestamptz Конец — timestamptz Разница — interval
Это ваш пример непонятный. А точная дата это timestamptz. Интервал — это timestamptz начала и timestamptz конца. И теперь вычислениями будет заниматься постгрес. А вам нужно только писать <, >, +, - и наслаждаться простотой и лаконичностью кода.
Спасибо, но мне это не подходит.
Обсуждают сегодня