Предпосылка: у вас есть таблица с одним столбцом, original_date
, со строкой типа данных:
ORIGINAL_DATE
20190825
20190826
20190827
20190828
20190829
20190830
20190831
20190901
Вопрос: Напишите запрос SQL для вычисления еще двух столбцов - end_of_week
- дата следующего воскресенья с original_date
. Если original_date
уже является воскресным днем, это поле должно иметь то же значение end_of_month
- значение даты конца месяца. Приемлемым решением является любое действительное число в строковом формате original_date
. С вычислением end_of_month и end_of_week
ORIGINAL_DATE END_OF_WEEK END_OF_MONTH
20190825 20190825 20190831
20190826 20190901 20190831
20190827 20190901 20190831
20190828 20190901 20190831
20190829 20190901 20190831
20190830 20190901 20190831
20190831 20190901 20190831
20190901 20190901 20190930
Дополнительная информация:
20190825 - воскресенье, поэтому end_of_week
для этого значения остается той же датой.
20190827 - вторник, а следующее воскресенье - 20190901
CREATE TABLE random_dates ( original_date VARCHAR(8) NOT NULL );
INSERT INTO random_dates(original_date) values('20190825');
INSERT INTO random_dates(original_date) values('20190826');
INSERT INTO random_dates(original_date) values('20190827');
INSERT INTO random_dates(original_date) values('20190828');
INSERT INTO random_dates(original_date) values('20190829');
INSERT INTO random_dates(original_date) values('20190830');
INSERT INTO random_dates(original_date) values('20190831');
INSERT INTO random_dates(original_date) values('20190901');
ОЖИДАЕМЫЙ ВЫХОД:
20190825 2019-08-25 2019-08-31
20190826 2019-09-01 2019-08-31
20190827 2019-09-01 2019-08-31
20190828 2019-09-01 2019-08-31
20190829 2019-09-01 2019-08-31
20190830 2019-09-01 2019-08-31
20190831 2019-09-01 2019-08-31
20190901 2019-09-01 2019-09-30