бросили и оставили функции в Афине - PullRequest
0 голосов
/ 23 сентября 2019

функция приведения и преобразования работает как положено в Афине:

SELECT code_2 as mydate,  cast( code_2 as varchar) from some_table   

, но как мне извлечь 8 крайних левых символов?Это выдает ошибку:

SELECT code_2 as mydate,  left(cast( code_2 as varchar),8) as date from some_table

Вот ошибка:

посторонний ввод «влево», ожидающий

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Если code_2 является строкой, используйте substr():

select code_2 as mydate, substr(code_2, 1, 8) as date
from some_table;

Если code_2 является датой, используйте соответствующую функцию даты:

select code_2 as mydate,
       date_format(code_2, '%Y-%m-%d') as date
from some_table;

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

1 голос
/ 23 сентября 2019

Попробуйте привести непосредственно к VARCHAR(8):

SELECT
    code_2 AS mydate,
    CAST(code_2 AS VARCHAR(8))
FROM some_table;

Я никогда не использовал Athena, но документация подразумевает, что это должно работать.Этот прием работает на Oracle, SQL Server, Postgres и MySQL.

...