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
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:En esta instrucción, primero verificamos la longitud de la cadena de entrada
strt_tm
utilizando la funciónIF
. Si la cadena tiene una longitud de 16 caracteres (formatoMM/dd/yy HH:mm
), utilizamos la funciónfrom_unixtime
para convertirla al formatoyyyy-MM-dd HH:mm
. Si la cadena tiene una longitud de 19 caracteres (formatoyyyy-MM-dd HH:mm:ss
), utilizamos una cadena de formato diferente en la funciónfrom_unixtime
para convertirla al formato deseado.Al utilizar esta función
IF
en la instrucciónSELECT
, podemos manejar ambos formatos de fecha y convertirlos al formato deseado en una sola instrucción.