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.

Fórmula de Google Data Studio para determinar si una fecha se encuentra en horario de verano

Tengo un informe de Google Data Studio que muestra las ventas en un sitio web por día. El problema es que la dimensión de fecha que utiliza GDS está en UTC, y el cliente desea ver el informe en hora central.
Durante el horario de verano, UTC está 5 horas adelante de CT, y durante el resto del tiempo está 6 horas adelante.
El formato de la dimensión es así: 1 de octubre de 2021 5:00:00 PM
Puedo sumar/restar horas a este formato sin problema. Lo que necesito hacer es restar horas a este valor de manera condicional según si la fecha está durante el horario de verano.
Por ejemplo, 1 de octubre de 2021 5:00:00 PM se convertiría en 1 de octubre de 2021 11:00:00 AM porque no está durante el horario de verano.
Mientras que, 1 de noviembre de 2021 5:00:00 PM se convertiría en 1 de noviembre de 2021 12:00:00 PM ya que está durante el horario de verano.

He probado con una fórmula IF utilizando las funciones MONTH, DAY y WEEKDAY, pero no he obtenido ningún resultado.

¿Alguien puede ayudar con esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para ajustar la dimensión de la fecha en Google Data Studio para mostrar la hora central durante el horario de verano, se pueden realizar los siguientes pasos:

    1. Convertir la dimensión de la fecha a una dimensión de fecha y hora utilizando la función PARSE_DATETIME.
    2. Utilizar la función DATETIME_DIFF para calcular la diferencia en horas entre la zona horaria UTC y la zona horaria central (CT).

    3. Utilizar las funciones MONTH y DAY para comprobar si la fecha se encuentra dentro del rango del horario de verano (DST).

    4. Ajustar la marca de tiempo utilizando la función DATETIME_ADD, restando una hora si la fecha se encuentra durante el horario de verano.

    Aquí está la fórmula que se puede utilizar para esto:

    IF(
       MONTH(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) > 3 AND 
       MONTH(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) < 11 OR 
       MONTH(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) = 3 AND 
       DAY(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) >= 14 AND 
       WEEKDAY(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) = 0 OR 
       MONTH(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) = 11 AND 
       DAY(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) <= 7 AND 
       WEEKDAY(PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date)) = 0,
       DATETIME_ADD(
          PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date), 
          INTERVAL (5-6)*60*60 SECOND), 
       DATETIME_ADD(
          PARSE_DATETIME('%b %d, %Y %I:%M:%S %p', Date), 
          INTERVAL (6-6)*60*60 SECOND)
    )
    

    Esta fórmula comprueba si la fecha se encuentra durante el horario de verano según las reglas en Estado Unidos (de marzo a noviembre), y ajusta la marca de tiempo en consecuencia restando una hora durante el horario de verano.

    Nota: Esta fórmula asume que el formato de fecha siempre es el mismo que el ejemplo proporcionado (es decir, “Oct 1, 2021 5:00:00 PM”). Si el formato cambia, la función PARSE_DATETIME deberá ajustarse en consecuencia.

Comments are closed.