Перевод запроса диапазона дат из MySQL в Postgres

Есть запрос 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');

Результат: Перевод запроса диапазона дат из MySQL в Postgres

Как это можно организовать? С помощью слияния диапазонов?

Просто примечание: это либо «PostgreSQL», либо «Postgres», а не «Postgre».

IMSoP 07.05.2022 13:11
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать 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

дб <> рабочий пример здесь

Другие вопросы по теме