Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso risolvere le eccezioni relative al timestamp quando eseguo una query su una tabella in Athena?
Visualizzo un'eccezione quando eseguo una query su una colonna di dati TIMESTAMP nella mia tabella Amazon Athena.
Breve descrizione
Quando esegui una query su una tabella in Athena con dati TIMESTAMP, la query potrebbe non riuscire con una delle seguenti eccezioni:
- "TYPE_MISMATCH: line 1:49: Cannot apply operator: timestamp(3) < varchar(19)": Se utilizzi un operatore logico, ad esempio "<", tra i valori TIMESTAMP e STRING nella query, potresti ricevere questa eccezione.
- "cast(col as timestamp) with INVALID_CAST_ARGUMENT": Se utilizzi CAST su una colonna con un tipo di dati non supportato da Athena, potresti ricevere questa eccezione.
Risoluzione
Errori di sintassi con operatori logici
Se la query utilizza un operatore logico per confrontare i valori del timestamp, potresti ricevere un errore di eccezione.
I dati TIMESTAMP nella tabella potrebbero essere nel formato errato. Athena richiede il formato Java TIMESTAMP. Utilizza la funzione data e ora di Trino per convertire STRING in TIMESTAMP nella condizione del filtro della query o utilizza CAST per convertire STRING in TIMESTAMP. Per ulteriori informazioni, consulta Date and time functions and operators (Operatori e funzioni data e ora) sul sito web Trino.
Completa i seguenti passaggi:
- Crea una tabella con dati di timestamp in formato STRING, simile a questo esempio:
Nota: sostituisci testdataset1, testid1, testname1 e testtimestamp1 con i tuoi valori.CREATE TABLE testdataset1 AS SELECT testid1, testname1, date_parse(testtimestamp1, '%m/%d/%Y %h:%i:%s %p') AS testtimestamp1 FROM ( VALUES (1, 'a', '7/14/2020 8:22:39 AM'), (2, 'b', '8/01/2015 10:22:39 PM'), (3, 'c', '8/13/2017 4:22:39 AM') ) AS t(testid1, testname1, testtimestamp1) - Utilizza la funzione CAST sul valore STRING per applicare il filtro timestamp:
Nota: sostituisci testdataset1 e testtimestamp1 con i tuoi valori.SELECT * FROM testdataset1 WHERE testtimestamp1 < CAST('2020-07-14 00:00:00' AS timestamp)
Errori di argomento non validi con CAST
Se utilizzi CAST per convertire una colonna nel tipo di dati TIMESTAMP, potresti ricevere un errore di eccezione.
Il tipo di dati della colonna che desideri trasmettere a TIMESTAMP potrebbe essere un tipo non supportato da Athena. Utilizza le funzioni di data e ora di Trino per leggere la colonna come DATE o TIMESTAMP nella query. Per ulteriori informazioni, consulta Date and time functions and operators (Operatori e funzioni data e ora) sul sito web Trino.
Completa i seguenti passaggi:
- Crea una tabella simile a questo esempio:
Nota: sostituisci testdataset2, testid2, testname2 e testtimestamp2 con i tuoi valori.CREATE TABLE testdataset2 AS SELECT * FROM (VALUES (1, 'a', '7/14/2020 8:22:39 AM'), (2, 'b', '8/01/2015 10:22:39 PM'), (3, 'c', '8/13/2017 4:22:39 AM') ) AS t(testid2, testname2, testtimestamp2) - Utilizza la funzione date_parse di Trino per convertire la tabella nel formato TIMESTAMP Java:
Nota: sostituisci testdataset2, testid2, testname2 e testtimestamp2 con i tuoi valori.SELECT testid2, testname2, date_parse(testtimestamp2, '%m/%d/%Y %h:%i:%s %p') AS testtimestamp2 FROM testdataset2
Informazioni correlate
Perché il risultato TIMESTAMP è vuoto quando eseguo una query su una tabella in Amazon Athena?
- Argomenti
- Analytics
- Lingua
- Italiano
Video correlati

