2016-08-23 2 views
1

Vous voulez faire this mais l'inverse.datetime de l'ISO 8601 Parsing utilisant Spark SQL

Mes date s sont dans ce format YYYY-MM-DDThh:mm:ss, je veux deux colonnes YYYY-MM-DD et hh:mm que je peux concat, si je veux, pour certaines requêtes.

je reçois une erreur lors de l'utilisation convert(); Je suppose que cela n'est pas supporté actuellement avec Spark SQL.

Lorsque j'utilise date(datetime) ou timestamp(datetime), je reçois toutes les valeurs nulles renvoyées. Cependant, minute(datetime) et hour(datetime) travail.

Actuellement, en utilisant cette

concat(date,' ', hour,':', (case when minute < 10 then concat('0',minute) else minute end)) as DateTime 
from (select OtherDateOnlyColumn as date, minute(datetime) as minute, hour(datetime) as hour from ...) 

qui est évidemment pas efficace.

Répondre

0

Je viens d'essayer avec la date() sur cette requête et il fonctionne:

select date(datetime) from df 

Peut-être la date dans votre table est de type chaîne; vous devriez vérifier les types de données des colonnes avec

DESCRIBE your_table 

Si la date est le type de chaîne, vous pouvez utiliser cast(datetime as timestamp) as newTimestamp qui est disponible en Spark SQL pour convertir le datetime retour à un type d'horodatage et utiliser des variantes de date_format(newTimestamp, 'YYYY-MM-dd hh:mm') à partir de là.