столбец даты очистки - PullRequest
0 голосов
/ 25 июня 2019

У меня есть таблица с полями даты в следующих форматах:

Date
01/05/2019 00:00
30/04/2019 00:00
29/04/2019 00:00
26/04/2019 00:00
25/04/2019 00:00
24/04/2019 00:00
17/04/2019 00:00
16/04/2019 00:00
15/04/2019 00:00
09/04/2019 00:00
09/04/2019
01/03/2019
01/02/2019
01/01/2019
01/12/2018
01/11/2018
01/10/2018
01/09/2018
01/08/2018

как их очистить, чтобы иметь этот формат для всех из них: 09/04/2019 00: 00

1 Ответ

0 голосов
/ 25 июня 2019

Вам нужно только конвертировать снова и снова, пока вы не получите нужный формат.Представьте себе пример таблицы, которую Amazon Athena предоставляет с этой структурой

    elb_logs
        request_timestamp (string)
        elb_name (string)
        request_ip (string)
        request_port (int)
        backend_ip (string)
        backend_port (int)
        request_processing_time (double)
        backend_processing_time (double)
        client_response_time (double)
        elb_response_code (string)
        backend_response_code (string)
        received_bytes (bigint)
        sent_bytes (bigint)
        request_verb (string)
        url (string)
        protocol (string)
        user_agent (string)
        ssl_cipher (string)
        ssl_protocol (string)

. Вы захотите проанализировать, извлечь, объединить и применить условное выражение после функции извлечения.Пожалуйста, примите во внимание, что я должен использовать date_parse(), поскольку в моей таблице с примерами нет ни одного столбца даты, подобного вашему

    SELECT
        concat(
          year, '/',
          CASE WHEN cast(month  as integer) between 1 and 9 THEN '0' || month  ELSE month END, '/',
          CASE WHEN cast(day    as integer) between 1 and 9 THEN '0' || day    ELSE day END, ' ',
          CASE WHEN cast(hour   as integer) between 0 and 9 THEN '0' || hour   ELSE hour END, ':',
          CASE WHEN cast(minute as integer) between 0 and 9 THEN '0' || minute ELSE minute END
          ) as "Date"
    FROM (
      SELECT
        cast(extract(YEAR   FROM date_parse(request_timestamp,'%Y-%m-%dT%H:%i:%s.%fZ')) as varchar) as year,
        cast(extract(MONTH  FROM date_parse(request_timestamp,'%Y-%m-%dT%H:%i:%s.%fZ')) as varchar) as month,
        cast(extract(DAY    FROM date_parse(request_timestamp,'%Y-%m-%dT%H:%i:%s.%fZ')) as varchar) as day,
        cast(extract(HOUR   FROM date_parse(request_timestamp,'%Y-%m-%dT%H:%i:%s.%fZ')) as varchar) as hour,
        cast(extract(MINUTE FROM date_parse(request_timestamp,'%Y-%m-%dT%H:%i:%s.%fZ')) as varchar) as minute
      FROM "sampledb"."elb_logs"
      )

Это должно дать вам результаты, которые вы опубликовали

Надеждаэто помогает (:

...