web-dev-qa-db-fra.com

Athéna supérieure à la condition dans la colonne date

J'ai la requête suivante que j'essaie d'exécuter sur Athena.

SELECT observation_date, COUNT(*) AS count
FROM db.table_name
WHERE observation_date > '2017-12-31'
GROUP BY observation_date

Cependant, il produit cette erreur:

SYNTAX_ERROR: line 3:24: '>' cannot be applied to date, varchar(10)

Cela me semble étrange. Y a-t-il une erreur dans ma requête ou Athena n'est-elle pas en mesure de gérer des opérateurs supérieurs aux colonnes de date?

Merci!

9
efbbrown

Vous devez utiliser un cast pour formater correctement la date avant de faire cette comparaison. Essayez ce qui suit:

SELECT observation_date, COUNT(*) AS count
FROM db.table_name
WHERE observation_date > CAST('2017-12-31' AS DATE)
GROUP BY observation_date

Vérifiez-le dans Fiddler: SQL Fidle

MISE À JOUR 17/07/2019

Afin de refléter les commentaires

SELECT observation_date, COUNT(*) AS count
FROM db.table_name
WHERE observation_date > DATE('2017-12-31')
GROUP BY observation_date
12
Barry Piccinni

Vous pouvez également utiliser la fonction date qui est un alias pratique pour CAST(x AS date):

SELECT * 
FROM date_data
WHERE trading_date >= DATE('2018-07-06');
7
Zerodf