Consulta con la fecha y hora - Amazon Athena

Consulta con la fecha y hora

En los ejemplos de esta sección se incluyen consultas que utilizan valores de fecha y hora.

ejemplo
: devolver el campo de marca de tiempo en formato ISO 8601 legible por humanos

La siguiente consulta utiliza las funciones from_unixtime y to_iso8601 para devolver el campo timestamp en formato ISO 8601 legible por humanos (por ejemplo, 2019-12-13T23:40:12.000Z en lugar de 1576280412771). La consulta devuelve también el nombre de origen HTTP, el ID de origen y la solicitud.

SELECT to_iso8601(from_unixtime(timestamp / 1000)) as time_ISO_8601, httpsourcename, httpsourceid, httprequest FROM waf_logs LIMIT 10;
ejemplo
: devolver registros de las últimas 24 horas

La siguiente consulta utiliza un filtro en el cláusula WHERE para devolver el nombre de origen HTTP, el ID de origen HTTP y los campos de solicitud HTTP para los registros de las últimas 24 horas.

SELECT to_iso8601(from_unixtime(timestamp/1000)) AS time_ISO_8601, httpsourcename, httpsourceid, httprequest FROM waf_logs WHERE from_unixtime(timestamp/1000) > now() - interval '1' day LIMIT 10;
ejemplo
: devolver registros para un intervalo de fechas y una dirección IP especificados

En la siguiente consulta, se enumeran los registros de un intervalo de fechas especificado para una dirección IP de cliente especificada.

SELECT * FROM waf_logs WHERE httprequest.clientip='53.21.198.66' AND "date" >= '2021/03/01' AND "date" < '2021/03/31'
ejemplo
: contar el número de direcciones IP en intervalos de cinco minutos para un intervalo de fechas especificado

La siguiente consulta cuenta el número de direcciones IP en intervalos de cinco minutos para un intervalo de fechas determinado.

WITH test_dataset AS (SELECT format_datetime(from_unixtime((timestamp/1000) - ((minute(from_unixtime(timestamp / 1000))%5) * 60)),'yyyy-MM-dd HH:mm') AS five_minutes_ts, "httprequest"."clientip" FROM waf_logs WHERE "date" >= '2021/03/01' AND "date" < '2021/03/31') SELECT five_minutes_ts,"clientip",count(*) ip_count FROM test_dataset GROUP BY five_minutes_ts,"clientip"
ejemplo
: contar el número de IP X-Forwarded-For en los últimos 10 días

En la siguiente consulta se filtran los encabezados de la solicitud y se cuenta el número de IP de X-Forwarded-For de los últimos 10 días.

WITH test_dataset AS (SELECT header FROM waf_logs CROSS JOIN UNNEST (httprequest.headers) AS t(header) WHERE from_unixtime("timestamp"/1000) > now() - interval '10' DAY) SELECT header.value AS ip, count(*) AS COUNT FROM test_dataset WHERE header.name='X-Forwarded-For' GROUP BY header.value ORDER BY COUNT DESC

Para obtener más información sobre las funciones de fecha y hora, consulte Funciones y operadores de fecha y hora en la documentación de Trino.