

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Mit Zeitstempeldaten arbeiten
<a name="data-types-timestamps"></a>

In diesem Abschnitt werden einige Überlegungen zur Arbeit mit Zeitstempeldaten in Athena beschrieben.

**Anmerkung**  
Die Behandlung von Zeitstempeln hat sich zwischen der früheren Engine-Version und der Athena-Engine-Version 3 etwas geändert. Informationen zu Fehlern im Zusammenhang mit Zeitstempeln, die in Athena-Engine-Version 3 auftreten können, sowie Lösungsvorschläge finden Sie unter [Änderungen des Zeitstempels](engine-versions-reference-0003.md#engine-versions-reference-0003-timestamp-changes) in der [Athena-Engine-Version 3](engine-versions-reference-0003.md)-Referenz.

## Format für das Schreiben von Zeitstempeldaten in Amazon-S3-Objekte
<a name="data-types-timestamps-writing-to-s3-objects"></a>

Das Format, in dem Zeitstempeldaten in Amazon S3 S3-Objekte geschrieben werden sollen, hängt sowohl vom Spaltendatentyp als auch von der verwendeten [SerDeBibliothek](https://docs.aws.amazon.com/athena/latest/ug/supported-serdes.html) ab.
+ Wenn Sie eine Tabellenspalte vom Typ `DATE` haben, erwartet Athena, dass es sich bei der entsprechenden Spalte oder Eigenschaft der Daten um eine Zeichenfolge im ISO-Format `YYYY-MM-DD` oder um einen integrierten Datumstyp wie bei Parquet oder ORC handelt.
+ Wenn Sie eine Tabellenspalte vom Typ `TIME` haben, erwartet Athena, dass es sich bei der entsprechenden Spalte oder Eigenschaft der Daten um eine Zeichenfolge im ISO-Format `HH:MM:SS` oder um einen integrierten Zeittyp wie bei Parquet oder ORC handelt.
+ Wenn Sie eine Tabellenspalte des Typs `TIMESTAMP` haben, erwartet Athena, dass die entsprechende Spalte oder Eigenschaft der Daten eine Zeichenkette im Format `YYYY-MM-DD HH:MM:SS.SSS` ist (beachten Sie das Leerzeichen zwischen Datum und Uhrzeit), oder ein eingebauter Zeittyp wie die für Parquet, ORC oder Ion. Beachten Sie, dass Athena das Verhalten für ungültige Zeitstempel (z. B. `0000-00-00 08:00:00.000`) nicht garantiert.
**Anmerkung**  
CSVSerOpen-De-Zeitstempel sind eine Ausnahme und müssen als UNIX-Epochen mit Millisekundenauflösung codiert werden.

## Sicherstellen, dass zeitlich aufgeteilte Daten mit dem Zeitstempelfeld in einem Datensatz übereinstimmen
<a name="data-types-timestamps-time-partitioned-data-and-timestamp-fields"></a>

Der Hersteller der Daten muss sicherstellen, dass die Partitionswerte mit den Daten innerhalb der Partition übereinstimmen. Wenn Ihre Daten beispielsweise eine `timestamp` Eigenschaft haben und Sie Firehose verwenden, um die Daten in Amazon S3 zu laden, müssen Sie [dynamische Partitionierung](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html) verwenden, da die Standardpartitionierung von Firehose wall-clock-based

## String als Datentyp für Partitionsschlüssel verwenden
<a name="data-types-timestamps-partition-key-types"></a>

Aus Leistungsgründen ist es vorzuziehen, `STRING` als Datentyp für Partitionsschlüssel zu verwenden. Obwohl Athena Partitionswerte im Format `YYYY-MM-DD` als Datum erkennt, wenn Sie den `DATE`-Typ verwenden, kann dies zu einer schlechten Leistung führen. Aus diesem Grund empfehlen wir, stattdessen den `STRING`-Datentyp für Partitionsschlüssel zu verwenden.

## Wie Sie Abfragen für Zeitstempelfelder schreiben, die ebenfalls zeitpartitioniert sind
<a name="data-types-timestamps-how-to-write-queries-for-timestamp-fields-that-are-also-time-partitioned"></a>

Wie Sie Abfragen für Zeitstempelfelder schreiben, die zeitpartitioniert sind, hängt vom Tabellentyp ab, den Sie abfragen möchten.

### Hive-Tabellen
<a name="data-types-timestamps-hive-tables"></a>

Bei den Hive-Tabellen, die in Athena am häufigsten verwendet werden, hat die Abfrage-Engine keine Kenntnis von den Beziehungen zwischen Spalten und Partitionsschlüsseln. Aus diesem Grund müssen Sie Ihren Abfragen immer Prädikate sowohl für die Spalte als auch für den Partitionsschlüssel hinzufügen.

Nehmen wir beispielsweise an, Sie haben eine `event_time`-Spalte und einen `event_date`-Partitionsschlüssel und möchten Ereignisse zwischen 23:00 und 03:00 Uhr abfragen. In diesem Fall müssen Sie Prädikate in Ihre Abfrage sowohl für die Spalte als auch für den Partitionsschlüssel aufnehmen, wie im folgenden Beispiel.

```
WHERE event_time BETWEEN start_time AND end_time 
  AND event_date BETWEEN start_time_date AND end_time_date
```

### Iceberg-Tabellen
<a name="data-types-timestamps-iceberg-tables"></a>

Bei Iceberg-Tabellen können Sie berechnete Partitionswerte verwenden, was Ihre Abfragen vereinfacht. Nehmen wir beispielsweise an, Ihre Iceberg-Tabelle wurde mit einer `PARTITIONED BY`-Klausel wie der folgenden erstellt:

```
PARTITIONED BY (event_date month(event_time))
```

In diesem Fall löscht die Abfrage-Engine automatisch Partitionen auf der Grundlage der Werte der `event_time`-Prädikate. Aus diesem Grund muss Ihre Abfrage nur ein Prädikat für `event_time` angeben, wie im folgenden Beispiel.

```
WHERE event_time BETWEEN start_time AND end_time
```

Weitere Informationen finden Sie unter [Iceberg-Tabellen erstellen](querying-iceberg-creating-tables.md).

Wenn Sie die versteckte Partitionierung von Iceberg für eine Zeitstempelspalte verwenden, erstellt Iceberg möglicherweise eine Partition auf einer konstruierten Tabellenspalte, die von einer Zeitstempelspalte abgeleitet und für eine effektivere Partitionierung in ein Datum umgewandelt wurde. Beispielsweise könnte es `event_date` aus der Zeitstempel-Spalte `event_time` erstellen und automatisch nach `event_date` partitionieren. In diesem Fall ist der **Partitions**-Typ ein **Datum**.

Um eine optimale Abfrageleistung bei der Verwendung der Partition zu erzielen, filtern Sie nach ganzen Tagesbereichen, um den Prädikat-Pushdown zu aktivieren. Beispielsweise würde die folgende Abfrage nicht nach unten verschoben werden, da der Bereich nicht in eine einzelne Datumspartition konvertiert werden kann, obwohl er innerhalb eines einzigen Tages liegt:

```
WHERE event_time >= TIMESTAMP '2024-04-18 00:00:00' AND event_time < TIMESTAMP '2024-04-18 12:00:00'
```

Verwenden Sie stattdessen einen vollen Tagesbereich, um die Prädikat-Pushdown zu ermöglichen und die Abfrageleistung zu verbessern, wie im folgenden Beispiel gezeigt.

```
WHERE event_time >= TIMESTAMP '2024-04-18 00:00:00' AND event_time < TIMESTAMP '2024-04-19 00:00:00'
```

Sie können auch die `BETWEEN start_time AND end_time`-Syntax verwenden oder mehrtägige Bereiche verwenden, solange die Zeitstempelabschnitte `00:00:00` sind.

Weitere Informationen finden Sie im [Trino Blogbeitrag](https://trino.io/blog/2023/04/11/date-predicates.html).