Строка в Дату в Запросе

miha 132 1 7 1

Запрос Преобразовать конвертировать строку в Дата "ГГГГММДД" Запросом из Строки

ВЫБРАТЬ
    01                КАК  НомерСтроки,
    "20260105170929"  КАК  Строка,
    "20221231235959"  КАК  Строка1
ПОМЕСТИТЬ Дано

ОБЪЕДИНИТЬ ВСЕ
    //

ВЫБРАТЬ
    02                КАК  НомерСтроки,
    "20260827140942"  КАК  Строка,
    "20221201000000"  КАК  Строка1

ОБЪЕДИНИТЬ ВСЕ
    //

ВЫБРАТЬ
    03                КАК  НомерСтроки,
    "20250626010517"  КАК  Строка,
    "20230318122825"  КАК  Строка1

ОБЪЕДИНИТЬ ВСЕ
    //

ВЫБРАТЬ
    04                КАК  НомерСтроки,
    "20251105201511"  КАК  Строка,
    "20230105155243"  КАК  Строка1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    0     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    1000  КАК  Г
ПОМЕСТИТЬ Формат

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    1     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    100   КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    2     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    10    КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    3     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    1     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    4     КАК  Х,
    0     КАК  Д,
    10    КАК  М,
    0     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    5     КАК  Х,
    0     КАК  Д,
    1     КАК  М,
    0     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    6     КАК  Х,
    10    КАК  Д,
    0     КАК  М,
    0     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    7     КАК  Х,
    1     КАК  Д,
    0     КАК  М,
    0     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    8     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    0     КАК  Г

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    9     КАК  Х,
    0     КАК  Д,
    0     КАК  М,
    0     КАК  Г
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Дано.НомерСтроки                        КАК  НомерСтроки,
    ДОБАВИТЬКДАТЕ(
        ДОБАВИТЬКДАТЕ(
            ДОБАВИТЬКДАТЕ(
                ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
                ДЕНЬ,
                СУММА(А.Д * Б.Х) - 1
            ),
            МЕСЯЦ,
            СУММА(А.М * Б.Х) - 1
        ),
        ГОД,
        СУММА(А.Г * Б.Х) - 1
    )                                       КАК  Ответ
ПОМЕСТИТЬ ВТ_Ответ
ИЗ
    Дано    КАК  Дано,
    Формат  КАК  А,
    Формат  КАК  Б

ГДЕ ИСТИНА
    И А.Х < 9
    И Б.Х < 10
    И ПОДСТРОКА(Дано.Строка,  А.Х + 1, 1) =
      ПОДСТРОКА("0123456789", Б.Х + 1, 1)

СГРУППИРОВАТЬ ПО
    Дано.НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Дано.НомерСтроки                        КАК  НомерСтроки,
    ДОБАВИТЬКДАТЕ(
        ДОБАВИТЬКДАТЕ(
            ДОБАВИТЬКДАТЕ(
                ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
                ДЕНЬ,
                СУММА(А.Д * Б.Х) - 1
            ),
            МЕСЯЦ,
            СУММА(А.М * Б.Х) - 1
        ),
        ГОД,
        СУММА(А.Г * Б.Х) - 1
    )                                       КАК  Ответ1
ПОМЕСТИТЬ ВТ_Ответ1
ИЗ
    Дано    КАК  Дано,
    Формат  КАК  А,
    Формат  КАК  Б

ГДЕ ИСТИНА
    И А.Х < 9
    И Б.Х < 10
    И ПОДСТРОКА(Дано.Строка1, А.Х + 1, 1) =
      ПОДСТРОКА("0123456789", Б.Х + 1, 1)

СГРУППИРОВАТЬ ПО
    Дано.НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    тОтвет.НомерСтроки,
    тОтвет.Ответ,
    тОтвет1.Ответ1
ИЗ
    ВТ_Ответ  КАК  тОтвет
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ
            ВТ_Ответ1  КАК  тОтвет1
                ПО тОтвет.НомерСтроки = тОтвет1.НомерСтроки
0
{} Ожидается идентификатор

См. также

Строка в ДатуВремя в Запросе

Строка в дату по форматной строке

Вывод месяца строкой из даты

СтрокаВДату (БСП)

Запрос с нумерацией строк

Определение длины строки в запросе

Добавить к дате и разность дат

В Запросе - Преобразовать количество остатков в строки запроса

Аналоги функций ДобавитьКДате и РазностьДат языка запросов

Модератору