Uso de valores de fecha, fecha/hora y hora en fórmulas
Las fórmulas de fecha son útiles para gestionar fechas límite de pagos, el límite de edad para contratos o cualquier otra función de su organización que dependa de la fecha o la hora.
Ediciones necesarias
| Disponible en: Salesforce Classic y Lightning Experience |
| Disponible en: todas las ediciones |
Se utilizan dos tipos de datos para trabajar con fechas: Fecha y Fecha/hora. Un tipo de datos, Hora, es independiente de la fecha para el seguimiento de la hora, como el horario de oficina. La mayoría de los valores que se utilizan al trabajar con fechas son del tipo de datos de fecha, que almacena el año, mes y día. Algunos campos, como CreatedDate, son campos de fecha/hora, lo que significa que no solo almacenan un valor de fecha, sino también un valor de hora (almacenado en GMT pero mostrado en la zona horaria del usuario). Los campos Fecha, Fecha/hora y Hora tienen el formato de la configuración regional del usuario cuando se visualizan en informes y páginas de detalles de registro. La precisión de un valor de Hora es en milisegundos. La precisión de un valor de Fecha/hora es en segundos.
Puede utilizar operaciones como la suma y la resta en valores de Fecha, Fecha/hora y Hora para calcular una fecha futura o el tiempo transcurrido entre dos fechas u horas. Por ejemplo, si a una fecha le resta otra, el valor resultante será la diferencia entre los dos valores iniciales en días (tipo de datos de número). La misma operación entre dos valores de fecha/hora devuelve un valor decimal indicando la diferencia en número de días, horas y minutos. La misma operación entre dos valores de tiempo devuelve milisegundos
Por ejemplo, si la diferencia entre dos valores de fecha/hora es 5,52, eso significa que los dos valores están separados por cinco días, 12 horas (0,5 de un día) y 28 minutos (0,02 de un día). También puede agregar valores numéricos a fechas y fechas/horas. Por ejemplo, la operación TODAY() + 3 devuelve tres días después de la fecha de hoy. Para obtener más información y ejemplos de cómo trabajar con fechas, vea la lista de Fórmulas de fecha de muestra.
En los ejemplos, se utilizan las variables date y date/time en lugar de valores o campos Fecha y Fecha/hora reales.
Recuerde que las funciones de fecha complicadas tienden a compilar con un tamaño mayor que las funciones de fórmula de texto o número, así que puede tener problemas con el tamaño de compilación de fórmulas.
TODAY(), NOW() y TIMENOW()
La función TODAY() devuelve el día, mes y año actuales como tipo de datos de fecha. Esta función es útil para fórmulas en las que le interesa saber cuántos días han pasado desde una fecha anterior, la fecha de un determinado número de días en el futuro o si solo desea mostrar la fecha actual.
La función NOW() devuelve el valor de fecha/hora del momento actual. Resulta de utilidad cuando le interesa saber horas específicas del día, así como la fecha.
La función TIMENOW() devuelve un valor en GMT que representa la hora actual sin la fecha. Utilice esta función en lugar de la función NOW() si desea la hora, los minutos, los segundos o los milisegundos actuales. Este valor es útil para la supervisión de tiempo, como, por ejemplo, los turnos de trabajo o el tiempo transcurrido.
Para obtener información detallada sobre cómo convertir entre valores de fecha y valores de fecha/hora, consulte Conversión entre fecha/hora y fecha.
Función DATE()
La función DATE() devuelve un valor de fecha, dado un año, mes y día. Los valores numéricos de año/mes/día y las funciones YEAR(), MONTH() y DAY() son parámetros válidos para DATE(). Por ejemplo, DATE( 2013, 6, 1 ) devuelve el 1 de junio de 2013. Del mismo modo, DATE( YEAR( TODAY() ), MONTH( TODAY() ) + 3, 1) devuelve el valor Fecha del primer día dentro de tres meses a partir de hoy en el año actual, asumiendo que la fecha es válida (por ejemplo, el mes está entre 1 y 12).
Si los valores de año, mes y día introducidos dan como resultado una fecha no válida, la función DATE() devuelve un error, de modo que la comprobación de errores es una parte importante al trabajar con valores de fecha. Puede leer sobre los métodos para gestionar fechas no válidas en Fórmulas de fecha de muestra.
Conversión entre fecha/hora y fecha
La fecha y la fecha/hora no son tipos de datos intercambiables, de modo que cuando quiera realizar operaciones entre valores de fecha y fecha/hora, deberá convertir los valores para que ambos sean del mismo tipo. Asimismo, algunas funciones (como YEAR(), MONTH() y DAY()) solo funcionan con valores de fecha, así que los valores de fecha/hora deben convertirse primero.
Utilice la función DATEVALUE( date/time
) para devolver el valor de fecha/hora. Por ejemplo, para obtener el año de una Fecha/hora, utilice YEAR( DATEVALUE(
date/time ) ) ).
Si una fórmula hace referencia a un campo Fecha/hora pero devuelve una Fecha, el componente de hora se ignora sin convertir a la zona horaria del usuario. Este comportamiento puede dar como resultado una fecha incorrecta. Para corregir la zona horaria del usuario, utilice la función DATEVALUE() para convertir el campo Fecha/hora.
Puede convertir un valor de fecha a una fecha/hora utilizando la función DATETIMEVALUE( date ). La hora se establecerá como las 12:00 a.m. según la Hora del meridiano de Greenwich (GMT) y, a continuación, se convertirá a la zona horaria del usuario que esté visualizando el registro cuando se muestre. Para un usuario ubicado en San Francisco, DATETIMEVALUE( TODAY() ) devuelve 5:00 p.m. del día anterior (durante el cambio de horario de verano) en lugar de las 12:00 a.m. del día actual. Consulte Nota sobre la fecha/hora y las zonas horarias para obtener más información.
Conversión de fecha/hora y hora
La función TIMEVALUE() devuelve un valor de tipo de datos de Hora con el formato “HH:MM:SS.MS” (horas:minutos:segundos.milisegundos) de 24 horas. Los valores numéricos H/M/S/MS y las funciones HOUR(), MINUTE(), SECONDS() y MILLISECONDS() son parámetros válidos para TIMEVALUE().
Utilice la función TIMEVALUE(value) para devolver el valor Hora de un tipo Fecha/Hora, un texto, un campo de combinación o una expresión. Por ejemplo, extraiga la hora del valor Fecha/Hora ClosedDate con TIMEVALUE(ClosedDate).
Conversión entre fecha y texto
Si desea incluir una fecha como parte de una cadena, envuelva el valor de fecha en la función TEXT() para convertirlo en texto. Por ejemplo, si desea devolver la fecha de hoy como texto, utilice:
"Today's date is " & TEXT( TODAY() )Esto devolverá la fecha con el formato “AAAA-MM-DD” en lugar de con el formato dependiente de la configuración regional. Puede cambiar el formato extrayendo el día, mes y año de la fecha primero y, a continuación, volviendo a combinarlos en el formato que desee. Por ejemplo:
"Today's date is " & TEXT( MONTH( date ) ) & "/" & TEXT( DAY( date ) ) & "/" & TEXT( YEAR( date ) ) ) También puede convertir texto en una fecha para utilizar el valor de la cadena con sus otros campos de fecha y fórmulas. Su texto debería tener el formato “AAAA-MM-DD”. Utilice esta fórmula para devolver el valor de fecha:
DATEVALUE( "YYYY-MM-DD" )Conversión entre fecha/hora y texto
Puede incluir valores de fecha/hora en una cadena utilizando la función TEXT(), pero deberá tener cuidado con las zonas horarias. Por ejemplo, considere esta fórmula:
"The current date and time is " & TEXT( NOW() )En esta fórmula, NOW() está compensado con GMT. Normalmente, NOW() se convertiría a la zona horaria del usuario al visualizarlo, pero como se ha convertido a texto, la conversión no tendrá lugar. Así que si ejecuta esta fórmula el 1 de agosto a las 5:00 PM a la hora de San Francisco (GMT-7), el resultado será “La fecha y hora actuales son 2013–08–02 00:00:00Z”.
Cuando convierte una fecha/hora en texto, se incluye una “Z” al final para indicar GMT. TEXT( date/time ) devuelve “Z” si el campo está en blanco. Así que, compruebe si el valor de fecha/hora con el que está trabajando está en blanco antes de convertirlo en texto:
IF(
ISBLANK( date/time ),
"",
TEXT( date/time )
)Para convertir una cadena en un valor de fecha/hora, utilice DATETIMEVALUE() introduciendo una cadena con el formato “AAAA-MM-DD HH:MM:SS”. Este método devolverá el valor de fecha/hora en GMT.
Conversión de hora y texto
Si desea incluir la hora como parte de una cadena, envuelva el valor Hora en la función TEXT() para convertirlo en texto. Por ejemplo, si desea devolver la fecha actual como texto, utilice:
"The time is " & TEXT( TIMENOW() )Esta función devuelve la hora con el formato “HH:MM:SS.MS”.
También puede convertir texto a un tipo de datos Hora para utilizar el valor de la cadena con otros campos de fecha y fórmulas. Asigne al texto el formato “HH:MM:SS.MS” de 24 horas. Utilice la función TIMEVALUE():
TIMEVALUE("17:30:45.125")Nota sobre la fecha/hora y las zonas horarias
Los valores de fecha y fecha/hora se almacenan en GMT. Cuando se guarda un registro, los valores de campo se ajustan de la zona horaria del usuario a GMT y, a continuación, se vuelven a ajustar a la zona horaria del usuario cuando se muestran en páginas de detalles de registro e informes. Con las conversiones de fecha, esto no supone ningún problema, ya que convertir una fecha/hora en una fecha da como resultado el mismo valor de fecha.
Sin embargo, al trabajar con valores y campos de fecha/hora, la conversión siempre se realiza en GMT, no la zona horaria del usuario. Restar un campo de fecha/hora estándar a otro no es un problema porque ambos campos están en la misma zona horaria. No obstante, cuando uno de los valores del cálculo es una conversión de un valor de texto o fecha a un valor de fecha/hora, los resultados son diferentes.
Supongamos que un usuario de San Francisco introduce un valor de 12:00 AM el 2 de agosto de 2013 en un campo de fecha/hora personalizado denominado Date_Time_c. Este valor se almacena como 2013–08–02 07:00:00Z, porque la diferencia de tiempo en Hora de verano del Pacífico es GMT-7. A las 12:00 p.m. PDT el 1 de agosto, el usuario ve el registro y se ejecuta la siguiente fórmula:
Date_Time_c - NOW()En el cálculo, NOW() es 2013–08–01 19:00:00Z y, a continuación, se resta a 2013–08–02 07:00:00Z, para devolver el resultado esperado de 0,5 (12 horas).
Supongamos que en lugar de NOW(), la fórmula convierte la cadena “2013–08–01 12:00:00” en un valor de fecha/hora:
Date_Time_c - DATETIMEVALUE( "2013-08-01 12:00:00" )En este caso, DATETIMEVALUE(
“2013–08–01 12:00:00” ) es 2013–08–01 12:00:00Z y devuelve un resultado de 0,79167 (o 19 horas).
No hay ningún modo de determinar la zona horaria de un usuario en una fórmula. Si todos sus usuarios se encuentran en la misma zona horaria, puede ajustar la diferencia de la zona horaria añadiendo o restando la diferencia horaria entre la zona horaria de los usuarios y GMT a sus valores convertidos. Sin embargo, como las zonas horarias pueden verse afectadas por el cambio de horario de verano y sus fechas de inicio y finalización son diferentes cada año, es difícil gestionar en una fórmula. Recomendamos utilizar Apex para transacciones que requieran la conversión entre valores de fecha/hora y valores de texto o fecha.

