Presto SQL - преобразование формата даты в формат даты

Я нахожусь на presto, и у меня есть дата в формате varchar, которая выглядит как -

7/14/2015 8:22:39 AM

Я просмотрел документы до и пробовал разные вещи (приведение, date_format, использование split_part для анализа, а затем приведение) и не получаю его для преобразования в формат даты, который я могу использовать с такими функциями, как date_diff.

Я пробовал:

cast(fieldname as timestamp)
date_format(fieldname, '%Y-%m-%d %T)

Оба дают мне такую ошибку

'Value cannot be cast to timestamp: 3/31/2016 6:05:04 PM'

Как мне конвертировать это?

Ответ 1

Я понял. Ниже приводится преобразование его в 24-часовой формат даты.

select date_parse('7/22/2016 6:05:04 PM','%m/%d/%Y %h:%i:%s %p')

Смотрите документацию по date_parse в Presto.

Ответ 2

Преобразованный DateID с датой в формате Int в формат даты: Presto Query

Select CAST(date_format(date_parse(cast(dateid as varchar(10)), '%Y%m%d'), '%Y/%m-%d') AS DATE)
from
     Table_Name
limit 10;

Ответ 3

Используйте: cast(date_parse(inv.date_created,'%Y-%m-%d %h24:%i:%s') as date)

Ввод: String timestamp

Вывод: date format 'yyyY-mm-dd'

Ответ 4

Стандарт SQL 2003 определяет формат следующим образом:

<unquoted timestamp string> ::= <unquoted date string> <space> <unquoted time string>
<date value> ::= <years value> <minus sign> <months value> <minus sign> <days value>
<time value> ::= <hours value> <colon> <minutes value> <colon> <seconds value>

Есть несколько определений между ними, которые просто ссылаются на них, но вкратце YYYY-MM-DD HH:MM:SS с дополнительным .mmm миллисекундами требуется для работы со всеми базами данных SQL.

Ответ 5

    select date_format(date_parse(t.payDate,'%Y-%m-%d %H:%i:%S'),'%Y-%m-%d') as payDate 
    from testTable  t 
    where t.paydate is not null and t.paydate <> '';

Ответ 6

Если ваша строка в формате ISO 8601, вы также можете использовать from_iso8601_timestamp

Ответ 7

попробуйте следующее:

SELECT convert(datetime, '7/14/2015 8:22:39 AM', 101) 

вывод:

2015-07-14 08: 22: 39.000