to_date в формате dd / MM / yyy

Dec 18 2020

У меня есть столбец в виде строки, которую 10/12/2020 13:14:39я хочу преобразовать в формат даты (позже я сделаю это с помощью инструмента рефакторинга). Сначала мне нужно изменить это так, чтобы время было отброшено, а значение было dd/MM/yyyyрасположено как yyyy/MM/dd.

Я использую калькулятор поля, как мне это сделать?

Я пробовал to_date("CreatedAt", 'dd/MM/yyyy')и format_date("CreatedAt", 'dd/MM/yyyy')не дал правильного результата.

Ответы

3 DaveX Dec 18 2020 at 02:19

Поскольку вы начинаете со строки даты и времени, вы можете полностью проанализировать ее и отформатировать результат в виде простой строки даты за один шаг:

format_date(to_datetime('10/12/2020 13:14:39',
   'dd/MM/yyyy HH:mm:ss'),
   'yyyy/MM/dd')

или

format_date(to_datetime("CreatedAt",'dd/MM/yyyy HH:mm:ss'),'yyyy/MM/dd')

(Обратите внимание на «Предварительный просмотр: '2020/12/10'» в Edit/Select/Select by Expressionокне ниже:

Документация по QGIS to_dataи атрибуту to_datetimeвыражения formatи его синтаксическому анализу находится в QT какhttps://doc.qt.io/qt-5/qdate.html#fromString-1 и https://doc.qt.io/qt-5/qtime.html#toString. Вы можете найти свой путь к ним через текст описания функции выражения QGIS.

1 SpatialDigger Dec 18 2020 at 00:51

Конечно, есть способ получше, после случайной догадки я получил это.

Substr("CreatedAT",0,-9)
To_date("CreatedAt", format('dd/MM/yyyy'))
Format_date("EndDate",'yyyy/MM/dd')

Я оставлю это здесь на время, чтобы дать людям шанс сделать это более красноречиво.