Cómo eliminar milisegundos o redondear al segundo más cercano

Un usuario Pregunto ✅

AlexandruNBD

Así que tengo una columna de fechas y horas en una base de datos de SQL Server como se muestra a continuación:

2019-06-20 06:02:55.667
2019-06-20 06:02:55.433
2019-06-20 06:20:00.083
2019-06-20 06:20:00.053
2019-06-20 06:20:00.130

Cuando creo un modelo en SSAS, obtengo las siguientes filas:

20/6/2019 6:02:55 a. m.
20/6/2019 6:02:55 a. m.
20/06/2019 06:20:00
20/06/2019 06:20:00
20/06/2019 06:20:00

A simple vista ya no aparecen los milisegundos. Sin embargo, cuando trato de hacer agregaciones basadas en la fecha, en realidad obtengo resultados incorrectos porque los milisegundos hacen que estas filas parezcan diferentes.

Lo que realmente quiero es encontrar una manera de eliminar los milisegundos de la fecha y hora. He intentado usar la función DAX FORMAT, sin embargo, en realidad redondea los milisegundos y obtengo los siguientes resultados:

20/06/19 06:02:56
20/06/19 06:02:55
20/06/19 06:20:00
20/06/19 06:20:00
20/06/19 06:20:00

Como puede ver, las dos primeras filas ahora tienen 56 y 55 segundos. Esto se debe a que los milisegundos se redondean.

¿Cómo puedo crear una nueva columna que en realidad tenga 55 segundos para la primera y la segunda fila? ¿Hay alguna manera de decirle a la función DAX que redondee los milisegundos? ¿O simplemente eliminarlos por completo?

Gracias

picante

¿Es esto Power BI? Si es así, en Power Query puede dividir la columna en la última aparición de ‘.’ (Esto debe ser antes de que el tipo de datos se cambie a DateTime (o similar).

Si no, creo que puede usar la misma funcionalidad de Power Query en versiones más nuevas de Analysis Services.

AlexandruNBD

En respuesta a picante

Sí, de hecho es Power BI. Sin embargo, es una conexión en vivo de SSAS. Como tal, todo el modelado de datos debe realizarse en SSAS.

Pero podrías estar en algo allí con dividir la columna. Voy a probar eso. Sin embargo, el problema es que los milisegundos en realidad no aparecen en SSAS (pero existen en algún lugar en la parte posterior, ya que se tienen en cuenta al hacer cálculos, distinguir, etc.).

sreenathv

En respuesta a AlexandruNBD

let
    Source = "2019-06-20 06:02:55.667",
    SourceToDateTimeFormat = DateTime.FromText(Source)
in
    SourceToDateTimeFormat

Acabo de probar esto por curiosidad. El código anterior está dando el resultado «20-06-2019 06:02:55».

Deja un comentario

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