2017-01-12 1 views
1

J'ai une entrée d'Amazon Alexa au format ISO 8601 et je me promenais si je devais faire tout un tas de sous-chaînes & transforme pour en faire un format BigQuery Timestamp, ou y at-il une fonction qui le fait?Existe-t-il un moyen de convertir ISO 8601 en format de date dans BigQuery?

Je comprends aussi qu'il est difficile de transformer 2015-W49 en une date, mais je pensais que je demanderais.

Références: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#date https://en.wikipedia.org/wiki/ISO_8601#Dates https://code.google.com/p/google-bigquery/issues/detail?id=208

Répondre

0

j'attendre ci-dessous résultat de cette conversion, qui est le premier jour de la semaine respective, qui s Hould respectivement:

Week Date in ISO 8601 First Day of the week  
2015-W01    2014-12-28 
2015-W02    2015-01-04 
2015-W49    2015-11-29 

Vous pouvez vérifier ci-dessus à http://www.enpicbcmed.eu/calendar/2015-W01 par exemple

Je pense que ci-dessous renvoie un résultat correct

#standardSQL 
WITH data AS (
    SELECT '2015-W01' AS dt UNION ALL 
    SELECT '2015-W02' AS dt UNION ALL 
    SELECT '2015-W49' AS dt 
) 
SELECT 
    dt, 
    DATE_ADD(PARSE_DATE("%Y-W%W", dt), 
      INTERVAL 7 * CAST(SUBSTR(dt,-2,2) AS INT64) - 6 - 
      EXTRACT (DAYOFWEEK FROM PARSE_DATE("%Y-W%W", dt)) DAY 
) as d 
FROM data 
ORDER BY dt 
+0

@hoggkm - avez-vous essayé? –

+0

Cette réponse est la plus précise pour calculer la date en fonction de la semaine. Il faut encore beaucoup de déclarations de cas de code/codage supplémentaire pour analyser universellement tous les formats ISO 8601 potentiels. Espérait qu'il y avait une fonction intégrée qui prend toute date ISO 8601 potentielle et renvoie un format d'horodatage BigQuery. – hoggkm

+0

@hoggkm d'accord, je ne pouvais pas non plus trouver une conversion directe en une étape. Si ma réponse vous a aidé et que vous l'avez accepté, veuillez également envisager de voter en faveur de cette option. Voir http://stackoverflow.com/help/someone-answers et la section Upvote dans http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work # 5235 –