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.

Eliminar minutos y segundos y luego convertir a la zona horaria UTC.

Tengo una columna con datos de marcas de tiempo como esta

2021-12-09 08:01:00.520

Quiero eliminar los minutos y segundos y luego convertir la fecha a la zona horaria UTC en una sola línea.

He probado este código

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, Time_Stamp), 0) From Table1

Obtengo este resultado

2021-12-09 08:00:00.000

y he probado este código

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), Time_Stamp) From Table1

Obtengo este resultado

2021-12-09 16:01:00.520

Lo que esperaba es

2021-12-09 16:00:00.000

¿Cómo combinar la instrucción SELECT en una sola línea de manera sencilla?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes combinar ambas sentencias SELECT en una sola línea utilizando funciones anidadas de esta manera:

    SELECT CONVERT(datetimeoffset, CONVERT(date, DATEADD(hour, DATEDIFF(hour, 0, Time_Stamp), 0))) AT TIME ZONE 'UTC' FROM Table1
    

    Este código primero elimina los minutos y segundos de la marca de tiempo utilizando las funciones DATEADD y DATEDIFF, luego convierte el resultado a una fecha utilizando la función CONVERT. A continuación, convierte esta fecha al tipo de dato datetimeoffset y la convierte a la zona horaria UTC utilizando la cláusula AT TIME ZONE.

    Esto te proporcionará la salida deseada, que es la fecha con la hora establecida en 00:00:00 en la zona horaria UTC.

Comments are closed.