Presto SQL - la Conversion d'une chaîne de date format de la date
Je suis sur la presto et ont une date au format varchar qui ressemble -
7/14/2015 8:22:39 AM
J'ai regardé le presto docs et essayé diverses choses(cast, date_format, à l'aide de split_part pour analyser et ensuite coulé) et ne reçois pas ce convertir à un format de date que je peux utiliser avec des fonctions comme date_diff.
J'ai essayé:
cast(fieldname as timestamp)
date_format(fieldname, '%Y-%m-%d %T)
Les deux me donne une erreur comme ceci
'Value cannot be cast to timestamp: 3/31/2016 6:05:04 PM'
Comment puis-je convertir ce?
Je pense que le problème est avec le format de date. Pouvez-vous modifier le format comme ce
Vous devriez essayer le format ISO 8601 "2016-03-31 18:05:04". Je suis presque certain qu'il devrait fonctionner
j'ai essayé
Pas
que peut-être un problème de mise en forme avec les données, mais que 0 est ce que le casting devrait résoudre le problème. Mais même quand j'ajoute le premier 0 de l'exemple ci-dessus, j'obtiens toujours la même erreur.
2016-03-31 6:05:04 PM
, et de le jeter ?Vous devriez essayer le format ISO 8601 "2016-03-31 18:05:04". Je suis presque certain qu'il devrait fonctionner
j'ai essayé
select cast('2016-03-31 6:05:04 PM' as timestamp)
et cela ne fonctionne pas, soitPas
6:05:04 PM
, il doit être 06:05:04
pour SUIS et 18:05:04
pour les PM.que peut-être un problème de mise en forme avec les données, mais que 0 est ce que le casting devrait résoudre le problème. Mais même quand j'ajoute le premier 0 de l'exemple ci-dessus, j'obtiens toujours la même erreur.
OriginalL'auteur Moosa | 2016-10-05
Vous devez vous connecter pour publier un commentaire.
J'ai tout compris. Le ci-dessous fonctionne en convertissant en un 24 heures format de la date.
OriginalL'auteur Moosa
Converti DateID avoir la date en Int le format de la date format: Presto Requête
OriginalL'auteur Rajiv Singh
Utilisation:
cast(date_parse(inv.date_created,'%Y-%m-%d %h24:%i:%s') as date)
D'entrée:
String timestamp
De sortie:
date format 'yyyy-mm-dd'
OriginalL'auteur VINOD KUMAR KEDARNATH
SQL 2003 standard définit le format comme suit:
Il y a quelques définitions dans entre que juste un lien de retour, mais en bref
YYYY-MM-DD HH:MM:SS
avec, en option,.mmm
millisecondes est nécessaire de travailler sur toutes les bases de données SQL.select cast('2016-03-31 6:05:04 PM' as timestamp)
il ne marche pas. mais si je supprime am/pm et neselect cast('2016-03-31 6:05:04' as timestamp)
, alors il fonctionne. mais j'ai besoin de l'am/pm ou le convertir en 24 heures.Si vous insistez sur l'utilisation de la non-standard
3/31/2016 6:05:04 PM
selon les documents, le format est%c/%e/%y %r
. Jetez un oeil prestodb.io/docs/current/functions/datetime.htmlvoilà comment mes données sont formatées. je suis prêt à le reformater, mais ne savent pas comment. c'est ma question. par le commentaire ci-dessus, si je ne
date_format('7/22/2016 6:05:04 PM', '%c/%e/%y %r')
qui me donne une erreur aussiOriginalL'auteur coladict