Estoy tratando de convertir una cadena en formato de marca de tiempo en BigQuery.
La fuente tiene todas las fechas en el formato "15/10 11:59 p. M.".

Esto es lo que estoy intentando como prueba de concepto:

SELECT
PARSE_TIMESTAMP(
'%d/%m/%y %I:%M %p',
  CONCAT(SPLIT('10/15 5:00 PM', ' ')[offset(0)] 
    ,'/',FORMAT_DATE('%y',CURRENT_DATE()),' '
    ,SPLIT('10/15 5:00 PM', ' ')[offset(1)],' '
    ,SPLIT('10/15 5:00 PM', ' ')[offset(2)]
  )
)

La cadena que esto genera es "15/10/18 5:00 PM" que me parece correcta, pero cuando la ejecuto aparece el error:

Error de consulta: no se pudo analizar la cadena de entrada "15/10/18 5:00 p.m."

¿Alguna idea de qué más podría intentar para que esto se formatee como una marca de tiempo?

¡Gracias!

0
Matt 16 oct. 2018 a las 16:25

2 respuestas

La mejor respuesta

Creo que casi estabas allí, pero tu día y mes estaban al revés, así que estaba tratando de llegar al decimoquinto mes.

SELECT
PARSE_TIMESTAMP(
'%m/%d/%y %I:%M %p',
  CONCAT(SPLIT('10/15 5:00 PM', ' ')[offset(0)] 
    ,'/',FORMAT_DATE('%y',CURRENT_DATE()),' '
    ,SPLIT('10/15 5:00 PM', ' ')[offset(1)],' '
    ,SPLIT('10/15 5:00 PM', ' ')[offset(2)]
  )
)
1
Bobbylank 16 oct. 2018 a las 13:40

A continuación es para BigQuery Standard SQL

SELECT
PARSE_TIMESTAMP('%Y/%m/%d %I:%M %p', 
  CONCAT(FORMAT_DATE('%Y/',CURRENT_DATE()),'10/15 5:00 PM')
)
0
Mikhail Berlyant 16 oct. 2018 a las 15:19