Приведите конкатенацию числа и строки к дате - PullRequest
0 голосов
/ 12 марта 2019

Пробовал:

select concat(cast(201201 as string), '01');

Возвращает 20120101

Тем не менее:

select to_date(concat(cast(201201 as string), '01'));

Возвращает ноль.

Как я могу сказать улью, чтобы обработать результат concat(cast(201201 as string), '01'); как дату, например, select date_add(to_date(concat(cast(201201 as string), '01')), -365);

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Я думаю, что вы можете сделать это с помощью цепных преобразований.,,строка в unix метка времени к метке времени на дату:

select to_date(from_unixtime(unix_timestamp(concat(cast(201201 as string), '01'), 'YYYYMMDD')));
0 голосов
/ 12 марта 2019

Оператор 'CAST' позволяет конвертировать между совместимыми типами.Но это значение должно быть приемлемым в качестве входных данных для создания значения целевого типа.

Итак, я ожидаю, что строка приемлема для приведения к значению DATE, только если эта строка представляет дату аналогичным образомэто было бы для создания буквального экземпляра DATE.Попробуйте стандартное представление ISO 8601:

SELECT
    CAST(concat('2012-01', '-01') AS DATE) AS dolor_date

Если строковое значение имеет другой формат, вам может потребоваться использовать другие функции манипуляции со строками, чтобы получить правильный формат:

SELECT
    CAST(
        concat(
            substring(lorem_string, 1, 4),
            '-',
            substring(lorem_string, 5, 2),
            '-',
            substring(lorem_string, 7, 2) )
        AS DATE) AS dolor_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...