Функции языка запросов 1С. Работа с датами

Функции работы с датами

Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.

Одной из первых моих статей в этой рубрике была небольшая шпаргалка по работе с датами, но о датах в запросах там было написано очень мало.  В запросах 1С с датами приходится работать довольно часто, особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии).

Функция Год

ГОД(<Дата>)
Функция Год() возвращает целое число – год даты. Например, выберем все заказы покупателя оформленные с 1 января 2016 года
ВЫБРАТЬ
    ЗаказПокупателя.Дата,
    ГОД(ЗаказПокупателя.Дата) КАК Год,
    ЗаказПокупателя.Ссылка
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ГОД(ЗаказПокупателя.Дата) > 2015

Функция Квартал

КВАРТАЛ(<Дата>)

Возвращает номер квартала даты (целочисленное значение от 1 до 4)

ВЫБРАТЬ
    ЗаказПокупателя.Дата,
    КВАРТАЛ(ЗаказПокупателя.Дата) КАК НомерКвартала,
    ЗаказПокупателя.Ссылка
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Ссылка = &ЗаказПокупателя

Предположим, в ЗаказПокупателя передаем заказ №100 от 12.03.2016, в этом случае наш запрос вернет НомерКвартала = 1

Функция Месяц

МЕСЯЦ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).

ВЫБРАТЬ МЕСЯЦ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 6

Функция ДеньГода

ДЕНЬГОДА(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).

ВЫБРАТЬ ДЕНЬГОДА(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 175

Функция День

ДЕНЬ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).

ВЫБРАТЬ ДЕНЬ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 23

Функция Неделя

НЕДЕЛЯ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер недели в году.

ВЫБРАТЬ НЕДЕЛЯ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 25

Функция ДеньНедели

ДЕНЬНЕДЕЛИ(<Дата>)

Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).

ВЫБРАТЬ ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2016, 6, 23))

Запрос вернет – 4

Функция Час

ЧАС(<Дата>)

Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).

ВЫБРАТЬ ЧАС(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет – 18

Функция Минута

МИНУТА(<Дата>)

Принимает параметр типа ДАТА.  Возвращает минуты часа (целочисленное значение от 0 до 59).

ВЫБРАТЬ МИНУТА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет – 25

Функция Секунда

СЕКУНДА(<Дата>)

Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).

ВЫБРАТЬ СЕКУНДА(ДАТАВРЕМЯ(2016, 6, 23, 18, 25, 36))

Запрос вернет – 36

Функция НачалоПериода

НАЧАЛОПЕРИОДА(<Дата>, <Период>)

Функция возвращает для указанной даты начало периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)

Запрос вернет – 01.06.2016

Функция КонецПериода

КОНЕЦПЕРИОДА(<Дата>, <Период>)

Функция возвращает для указанной даты конец периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2016, 6, 23), МЕСЯЦ)

Запрос вернет – 30.06.2016

Функция ДобавитьКДате

ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)

Функция добавляет к дате указанное количество временных интервалов.

ВЫБРАТЬ ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2016, 6, 15), МЕСЯЦ, 4)

Получаем дату 15.10.2016 0:00:00 Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.

Функция РазностьДат

РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)

Функция рассчитывает календарную разницу между двумя датами и ее нельзя использовать в местах, где необходимо рассчитать банковских или рабочих дней. Тип может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

ВЫБРАТЬ	РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2016, 2, 15), ДАТАВРЕМЯ(2016, 6, 12), ДЕНЬ)

Возвращает 118 дней.

Один ответ к «Функции языка запросов 1С. Работа с датами»

  1. может кому будет полезно
    КАК вычислить вручную ПериодМЕсяц по аналогии с оборотным регистром :
    ВЫБОР
    КОГДА МЕСЯЦ(&НачалоПериода) = МЕСЯЦ(Док.Дата) И МЕСЯЦ(&КонецПериода) = МЕСЯЦ(Док.Дата)
    ТОГДА &НачалоПериода
    ИНАЧЕ НачалоПериода(Док.Дата, МЕСЯЦ)
    КОНЕЦ КАК ПериодМЕсяц,

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

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