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(_)})
Eric_Zhang
@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")))
- ¿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)