Конец месяца это какие числа
Перейти к содержимому

Конец месяца это какие числа

  • автор:

конец месяца

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

3 Comments

John Doe

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

John Doe

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

John Doe

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Начало и конец месяца

При работе с датами периодически приходится определять первый и последний день месяца по дате. Этим мы сейчас и займемся.

Для усечения даты в PostgreSQL есть функция date_trunc(поле, значение) . Работает она аналогично функции trunc для чисел.

# date_trunc
1 2023-02-17 00:00:00

Первый параметр функции date_trunc может принимать значения:

  • microseconds
  • milliseconds
  • second
  • minute
  • hour
  • day
  • week
  • month
  • quarter
  • year
  • decade
  • century
  • millennium

Первый день месяца

С помощью функции date_trunc мы можем легко определить первый день месяца:

# date_trunc
1 2023-02-01 00:00:00

При желании можно привести результат к дате:

# date_trunc
1 2023-02-01

Первый день месяца можно получить преобразовав исходную дату в строку с годом и месяцем, а затем сделать обратное преобразование в дату, добавив 1-е число.

# date
1 2023-02-01

Последний день месяца

С последним днем месяца дела обстоят немножко сложнее. В месяце может быть от 28 до 31 дней в зависимости от месяца и года. Просто так подставить число в строку не получится.

На помощь нам придет получение первого числа месяца и добавление интервала в один месяц.

# result
1 2023-03-01 00:00:00

Так мы получаем первое число следующего месяца. Теперь нам достаточно отнять один день и мы получим последний день текущего месяца:

# result
1 2023-02-28 00:00:00

Итоговый запрос для получения дат первого и последнего дней месяца:

# start end
1 2023-02-01 00:00:00 2023-02-28 00:00:00

Добавление месяцев

Стоит отметить, как работает добавление месяцев к дате.

Если в исходной дате день месяца с 1 по 28, то в результате будет этот же день месяца.

# ?column?
1 2023-03-17 13:25:00

Для дней с 29 по 31 может получиться так, что после добавления нужного количества месяцев этого же числа не будет в месяце результата. В этом случае будет взят последний день месяца.

Например, к 31 января добавляем 1 месяц. 31 февраля не существует, поэтому результатом будет последний день февраля — 28 февраля (или 29 для високосного года).

# ?column?
1 2023-02-28 00:00:00

Для високосного года:

# ?column?
1 2024-02-29 00:00:00

Определение начала и конца года

Аналогично определению первого и последнего дня месяца можно найти первый и последний день года по дате.

Как по дате определить что это конец месяца?

(10) Неформализовано понятие в сабже «конец месяца».
Если «конец месяца» — это «последний день месяца», то правильный (первый правильный) в (3).
Если конец месяца — это последняя секунда (т.е., в интерпретации системной функции КонецМесяца), то (4) — тоже правильный.
😛

(12) тогда лучше так :

Функция ЭтоКонецМесяца (Дата)
Возврат КонецДня(дата) = КонецМесяца(Дата);
КонецФункции

(16) Паразитируя на (1):
ЭтоКонецМесяца=День(КонецДня(Дата)+1)=1
Или более загадочно
ЭтоКонецМесяца=Не(День(КонецДня(Дата)-1)

(16) вот без месяцев

Если День(КонецДня(Дата)) > День(КонецДня(Дата) + 1)

Если дата = ПерваяДатаПервогоМесяца-1 тогда
.
ИначеЕсли дата = ПерваяДатаВторогоМесяца-1 тогда

НашГод = Год(НашаДата);
ЭтоВисокосныйГод = (НашГод%4=0) и (НашГод%100<>0 или НашГод%400=0);
Массив = Новый Массив();
Массив.Добавить(31);
Массив.Добавить(28 + Число(ЭтоВисокосныйГод);
Массив.Добавить(31);
Массив.Добавить(30);
Массив.Добавить(31);
Массив.Добавить(30);
Массив.Добавить(31);
Массив.Добавить(31);
Массив.Добавить(30);
Массив.Добавить(31);
Массив.Добавить(30);
Массив.Добавить(31);
С=0;
Для й=1 по 12 Цикл
Массив[й]=Массив[й]+С;
С = Массив[й];
КонецЦикла;
ЭтоКонецМесяца = Массив.Найти(ДеньГода(НашаДата))<>Неопределено;

1) С какого числа начинается и каким числом заканчивается каждый месяц? 2) Как называется начало недели, середина и конец?

Лиса

1). Каждый месяц начинается с 1-го числа: 1 января, 1 мая, 1 сентября и т.д.

Нужно сказать и про то, когда заканчивается каждый месяц. Здесь ситуация обстоит следующим образом:

  • 31 число: январь, март, май, июль, август, октябрь, декабрь
  • 30 число: апрель, июнь, сентябрь, ноябрь

А вот февраль заканчивается 28-м (или 29-м, если год високосный) днем.

2). Понедельник – это начало недели, четверг – середина, а воскресенье – конец недели.

Необходимо перечислить все дни недели по порядку: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *