Abfrage mit Datum und Uhrzeit - Amazon Athena

Abfrage mit Datum und Uhrzeit

Die Beispiele in diesem Abschnitt enthalten Abfragen, die Datums- und Uhrzeitwerte verwenden.

Beispiel
– Gibt das Zeitstempelfeld im menschenlesbaren ISO-8601-Format zurück

Die folgende Abfrage verwendet die from_unixtime- und to_iso8601-Funktionen, um das timestamp-Feld im menschenlesbaren ISO 8601-Format zurückzugeben (z. B. 2019-12-13T23:40:12.000Z statt 1576280412771). Die Abfrage gibt auch den HTTP-Quellnamen, die Quell-ID und die Anforderung zurück.

SELECT to_iso8601(from_unixtime(timestamp / 1000)) as time_ISO_8601, httpsourcename, httpsourceid, httprequest FROM waf_logs LIMIT 10;
Beispiel
– Gibt Datensätze der letzten 24 Stunden zurück

Die folgende Abfrage verwendet einen Filter in der WHERE-Klausel, um den HTTP-Quellnamen, die HTTP-Quell-ID und die HTTP-Anforderungsfelder für Datensätze der letzten 24 Stunden zurückzugeben.

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;
Beispiel
– Gibt Datensätze für einen angegebenen Datumsbereich und eine IP-Adresse zurück

Die folgende Abfrage listet die Datensätze in einem angegebenen Datumsbereich für eine angegebene Client-IP-Adresse auf.

SELECT * FROM waf_logs WHERE httprequest.clientip='53.21.198.66' AND "date" >= '2021/03/01' AND "date" < '2021/03/31'
Beispiel
– Zählt Sie für einen angegebenen Datumsbereich die Anzahl der IP-Adressen in 5-Minuten-Intervallen

Die folgende Abfrage zählt für einen bestimmten Datumsbereich die Anzahl der IP-Adressen in fünf Minuten Intervallen.

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"
Beispiel
– Zählt die Anzahl der X-Forwarded-For-IP in den letzten zehn Tagen

Die folgende Abfrage filtert die Anforderungsheader und zählt die Anzahl der X-Forwarded-For-IPs in den letzten zehn Tagen.

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

Weitere Informationen zu Datums- und Uhrzeitfunktionen finden Sie unter Datums- und Uhrzeitfunktionen und Operatoren in der Trino-Dokumentation.