Есть запрос mysql, и мне нужно реализовать его в запросе postgresql.
create table objects(
object_id int NOT NULL PRIMARY KEY ,
city_id int not null ,
price int ,
area_total int ,
status varchar(50) ,
class varchar(50) ,
action varchar(50) ,
date_create timestamp,
FOREIGN KEY(city_id) references avg_price_square_city(city_id)
);
SET @WeekDate = CAST('2020/11/16' as DATETIME);
SET @WeekRangeStart = CAST('2020/11/16 00:00:00' as DATETIME);
SET @WeekRangeEnd = CAST('2020/11/22 00:00:00' as DATETIME);
select
object_id,ADDDATE(@WeekDate, -(DAYOFWEEK(@WeekDate)-1) +1) as Monday,
DATE_ADD(ADDDATE(@WeekDate, -(DAYOFWEEK(@WeekDate)-1) +9), INTERVAL -1 SECOND) as Sunday,
@range := CONCAT(@WeekRangeStart,' - ',@WeekRangeEnd) as 'Диапазон'
FROM objects;
Этот запрос выводит два поля и диапазон, указанный в @WeekRangeStart и @WeekRangeEnd. @Weekdate определяет, какой день недели, т. е. понедельник и воскресенье.
INSERT INTO newdb.objects (object_id, city_id, price, area_total, status, class, action, date_create) VALUES (1, 1, 4600000, 72, 'active', 'Вторичная', 'Продажа', '2020-11-18 12:23:00');
INSERT INTO newdb.objects (object_id, city_id, price, area_total, status, class, action, date_create) VALUES (2, 2, 5400000, 84, 'active', 'Secondary', 'Sale', '2020-11-19 21:49:35');
Как это можно организовать? С помощью слияния диапазонов?
Вы можете использовать DATE_TRUNC, чтобы получить понедельники из даты в объектах, а затем вычислить воскресенье просто.
SELECT object_id, date_trunc('week', date_create)::timestamp AS "Monday", (date_trunc('week', date_create)+ '6 days'::interval)::timestamp As "Sunday", date_trunc('week', date_create)::timestamp || ' - ' || (date_trunc('week', date_create)+ '6 days'::interval)::timestamp AS "range" FROM objects
object_id | Monday | Sunday | range --------: | :------------------ | :------------------ | :---------------------------------------- 1 | 2020-11-16 00:00:00 | 2020-11-22 00:00:00 | 2020-11-16 00:00:00 - 2020-11-22 00:00:00 2 | 2020-11-16 00:00:00 | 2020-11-22 00:00:00 | 2020-11-16 00:00:00 - 2020-11-22 00:00:00
дб <> рабочий пример здесь
Просто примечание: это либо «PostgreSQL», либо «Postgres», а не «Postgre».