¿Cómo convierto la fecha de serie a la fecha y también manejo valores cero?

Un usuario Pregunto ✅

kfschaefer

¿Cómo convierto un valor de serie de fecha en una fecha, pero también necesito manejar el valor cero?

si (valor de fecha (terminado) = verdadero entonces valor de fecha (terminado) más 0

Ayuda por favor con la sintaxis correcta.

karen

marcalaf

Hilo antiguo, pero lo publicaré porque este fue el resultado principal cuando estaba buscando una respuesta a esto, y estaba un poco confundido por las respuestas actuales.

En primer lugar, en el modelo de datos (DAX) para convertir un número de serie a la fecha, simplemente cambie la columna al tipo de datos de fecha, sin necesidad de usar funciones.

Para el manejo de cero, cree una columna calculada de tipo de datos de fecha y use la siguiente función:

 =IF([date serial number]=0,BLANK(),[date serial number])

Mezclar diferentes tipos de datos generalmente confunde a DAX (es decir, probablemente obtendrá un error) y debe evitarse. Por esta razón, convierta los ceros en espacios en blanco, no los deje como ceros y mezcle con fechas.

En el editor de consultas (M), el fragmento de código de fórmula básico sería «si [date serial number] = 0 entonces nulo otra fecha.Desde([date serial number])»: el paso real sería similar al siguiente si desea agregar una columna personalizada:

= Table.AddColumn(#"Previous Step", "Corrected Dates", each if [date serial number] = 0 then null else Date.From([date serial number]))

O si solo desea transformar la columna serial:

= Table.TransformColumns(#"Previous Step", {"date serial number", each if _ = 0 then null else Date.From(_)})


@kfschaefer escribió:

¿Cómo convierto un valor de serie de fecha a una fecha, pero también necesita manejar valor cero.

si (valor de fecha (terminado) = verdadero entonces valor de fecha (terminado) más 0

Ayuda por favor con la sintaxis correcta.

karen


Hola Karen, si el valor de serie de la fecha en su publicación significa, por ejemplo, 1 de enero de 1900 es el número de serie 1 y 2 de enero de 1900 es el número de serie 2, etc., puede agregar una columna con la siguiente expresión.

DT = IF(Sheet1[DATE SERIAL NUMBER]=0,"0",IF(Sheet1[DATE SERIAL NUMBER]>=32767,FORMAT(DATE(2000,1,Sheet1[DATE SERIAL NUMBER]-36523),"YYYY-MM-DD"),FORMAT(DATE(1900,1,Sheet1[DATE SERIAL NUMBER]),"YYYY-MM-DD")))

Captura.PNG

  • ¿Por qué «-36523»?
    Según mi prueba, con respecto a FECHA (AÑO, MES, DÍA), el parámetro DÍA es un número entero de 2 bytes, cualquier valor mayor que 32767 se truncaría como 32767. Dado que el número de serie ha sido más de 40000 años recientes, estoy usando ‘ 2000-01-01′(36524 días desde 1900-01-01) como línea base.

Si tiene alguna pregunta, no dude en hacérmelo saber.

greg_deckler

En DAX, la sintaxis es:

SI (prueba verdadera/falsa, declaración verdadera, declaración falsa)

Entonces, algo como:

SI (valor de fecha[Termed] = VERDADERO,VALORFECHA([termded]),0)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *