es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En PySpark SQL, convierta el formato de fecha de mm/dd/yy hh:mm o yyyy-mm-dd hh:mm:ss a yyyy-mm-dd hh:mm.

Tengo 2 formatos de fecha (MM/dd/yy HH:mm y yyyy-mm-dd HH:mm:ss) en la hora de inicio que necesitan convertirse al formato yyyy-mm-dd HH:mm. ¿Cómo puedo manejar ambos formatos de datos en una sola declaración SELECT a continuación para convertirlos al formato deseado?


df1 = spark.sql("""select from_unixtime(unix_timestamp(strt_tm,'MM/dd/yy HH:mm'),'yyyy-mm-dd HH:mm) as starttime from table1""")

Entrada
lang-text
strt_tm
12/11/21 01:15
2021-12-11 11:15:12

Salida:

lang-text
strt_tm
2021-12-11 01:15
2021-12-11 11:15

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para manejar ambos formatos de fecha en una sola instrucción SQL y convertirlos al formato deseado, puedes utilizar la función IF para verificar la longitud de la cadena de entrada y luego formatearla en consecuencia. Aquí tienes un ejemplo de instrucción SQL que hace eso:

    SELECT IF(length(strt_tm) = 16, from_unixtime(unix_timestamp(strt_tm,'MM/dd/yy HH:mm'),'yyyy-MM-dd HH:mm'),
                from_unixtime(unix_timestamp(strt_tm,'yyyy-MM-dd HH:mm:ss'),'yyyy-MM-dd HH:mm')) AS starttime
    FROM table1
    

    En esta instrucción, primero verificamos la longitud de la cadena de entrada strt_tm utilizando la función IF. Si la cadena tiene una longitud de 16 caracteres (formato MM/dd/yy HH:mm), utilizamos la función from_unixtime para convertirla al formato yyyy-MM-dd HH:mm. Si la cadena tiene una longitud de 19 caracteres (formato yyyy-MM-dd HH:mm:ss), utilizamos una cadena de formato diferente en la función from_unixtime para convertirla al formato deseado.

    Al utilizar esta función IF en la instrucción SELECT, podemos manejar ambos formatos de fecha y convertirlos al formato deseado en una sola instrucción.

Comments are closed.