Programa
La función Snowflake DATEADD
es un método relativamente sencillo pero potente para realizar cualquier tipo de aritmética de fechas, que permite a los profesionales de los datos sumar o restar el intervalo de tiempo específico de un valor de fecha, hora o marca de tiempo.
Entender cómo utilizar DATEADD
permitirá a los analistas de datos y/o ingenieros realizar análisis útiles calculando periodos de tiempo de suscripción, construir proyecciones para cualquier fecha futura e incluso generar conjuntos de datos de series temporales para análisis posteriores .
En este tutorial, conocerás la sintaxis de la función, cómo puede aplicarse en la práctica y el potencial general de la función DATEADD
en tu arsenal de manipulación de fechas en Snowflake SQL.
Si te estás iniciando en Snowflake, asegúrate de consultar nuestro programa de habilidades Fundamentos de Snowflake.
Configurar una base de datos de muestra para la práctica
Antes de sumergirnos en los detalles de DATEADD
, vamos a crear una base de datos de ejemplo con datos ricos en fechas para que nuestros ejemplos sean más prácticos. Trabajar con datos reales nos ayudará a reforzar los conceptos a medida que aprendemos las capacidades de la función.
1. Crear una cuenta Snowflake (para nuevos usuarios)
Si eres nuevo en Snowflake, tendrás que crear una cuenta de prueba gratuita que proporciona créditos durante 30 días. Para una introducción completa a la plataforma, consulta este curso de Introducción a Snowflake, que cubre los aspectos básicos y fundamentales.
2. Configurar tu hoja de cálculo
En Snowflake, las consultas SQL se ejecutan en "Hojas de trabajo" (similares a los cuadernos). Para crear una nueva hoja de cálculo:
- Accede a tu cuenta Snowflake
- Navega hasta Hojas de cálculo desde el menú principal
- Pulsa el botón "+" para crear una nueva hoja de cálculo
- Ponle el nombre "DATEADD_Practice".
Si eres completamente nuevo en la interfaz de Snowflake, este Tutorial de Snowflake para principiantes te ofrece un útil recorrido por la plataforma.
3. Elegir una base de datos y un esquema
Para este tutorial, sólo utilizaremos la base de datos Snowflake Learning y el esquema público:
-- Create database and schema
USE DATABASE SNOWFLAKE_LEARNING_DB;
USE SCHEMA PUBLIC;
4. Generar datos sintéticos y tablas
Crearemos tres tablas con datos relacionados con la fecha para demostrar "DATEADD" en varios escenarios:
Nota: Utiliza "Comando + Mayúsculas + Intro"/"Ctrl + Mayúsculas + Intro" para ejecutar los siguientes comandos a la vez en tu hoja de cálculo:
-- Create subscription table
CREATE OR REPLACE TABLE subscriptions (
subscription_id INTEGER,
customer_id INTEGER,
plan_name VARCHAR(50),
start_date DATE,
end_date DATE,
billing_cycle VARCHAR(20)
);
-- Create orders table with timestamps
CREATE OR REPLACE TABLE orders (
order_id INTEGER,
customer_id INTEGER,
order_timestamp TIMESTAMP_NTZ,
delivery_estimate TIMESTAMP_NTZ,
total_amount DECIMAL(10,2)
);
-- Create events table with time zones
CREATE OR REPLACE TABLE events (
event_id INTEGER,
event_name VARCHAR(100),
event_timestamp TIMESTAMP_TZ,
duration_minutes INTEGER
);
Para más detalles sobre la creación de tablas, incluidos los distintos tipos de tablas y las mejores prácticas, consulta Crear tablas en Snowflake.
Pista: Debes borrar todas las consultas existentes de tu hoja de cálculo después de que se hayan ejecutado correctamente.
5. Rellenar tablas con datos de muestra
Vamos a insertar datos de ejemplo con diversos valores de fecha y hora:
-- Insert subscription data
INSERT INTO subscriptions VALUES
(1001, 5001, 'Basic', '2023-01-15', '2023-07-15', 'Monthly'),
(1002, 5002, 'Premium', '2023-02-28', '2024-02-28', 'Annual'),
(1003, 5003, 'Premium', '2023-01-31', '2023-04-30', 'Quarterly'),
(1004, 5001, 'Pro', '2022-12-15', '2023-12-15', 'Annual'),
(1005, 5004, 'Basic', '2023-03-15', NULL, 'Monthly');
-- Insert orders with timestamps
INSERT INTO orders VALUES
(10001, 5001, '2023-03-10 08:30:00', '2023-03-12 14:00:00', 125.99),
(10002, 5002, '2023-03-10 12:15:30', '2023-03-11 09:00:00', 89.50),
(10003, 5003, '2023-03-09 17:45:20', '2023-03-15 13:30:00', 245.00),
(10004, 5001, '2023-02-28 23:59:59', '2023-03-05 10:00:00', 49.99),
(10005, 5004, '2023-03-01 00:00:01', '2023-03-02 12:00:00', 175.25);
-- Insert events
INSERT INTO events VALUES
(101, 'System Update', '2023-03-15 01:00:00'::TIMESTAMP_TZ, 120),
(102, 'Maintenance', '2023-03-20 22:00:00'::TIMESTAMP_TZ, 60),
(103, 'Data Migration', '2023-03-18 15:30:00'::TIMESTAMP_TZ, 180),
(104, 'Backup', '2023-03-10 03:00:00'::TIMESTAMP_TZ, 45),
(105, 'Security Audit', '2023-03-12 09:15:00'::TIMESTAMP_TZ, 90);
6. Validación de los datos de la muestra
Vamos a ejecutar algunas consultas básicas para verificar que nuestros datos se han cargado correctamente:
-- Check subscription data
SELECT * FROM subscriptions;
-- Check orders data
SELECT * FROM orders;
-- Check events data
SELECT * FROM events;
Ahora tenemos una base de datos de ejemplo funcional con tres tablas que contienen diferentes formatos de fecha y hora. Este conjunto de datos nos servirá de base para explorar la función DATEADD
a lo largo del resto de este tutorial.
Comprender el Snowflake DATEADD: Sintaxis y parámetros
La función DATEADD
es esencial para las operaciones aritméticas de fechas en Snowflake. Te permite sumar o restar intervalos de tiempo específicos a valores de fecha, hora o marca de tiempo. Vamos a desglosar cómo funciona esta función, empezando por su sintaxis y parámetros.
Sintaxis y parámetros de las funciones
La sintaxis básica de la función DATEADD
es:
DATEADD(date_part, value, date_or_timestamp_expression)
Examinemos cada parámetro:
-- Basic DATEADD example
SELECT
DATEADD(MONTH, 3, '2023-01-15') AS three_months_later;
Explicación: Esta consulta añade 3 meses al 15 de enero de 2023. Los parámetros funcionan del siguiente modo:
date_part (MONTH)
: Especifica la unidad de tiempo que estamos sumando o restandovalue (3)
: El número de unidades a sumar (positivo) o restar (negativo)date_or_timestamp_expression
('2023-01-15'): La fecha de inicio para modificar
Salida:
THREE_MONTHS_LATER
-----------------
2023-04-15
Partes de fecha admitidas
Snowflake admite varias partes de fecha que pueden utilizarse con DATEADD
:
-- Examples of different date parts
SELECT
DATEADD(YEAR, 1, '2023-02-28') AS add_one_year,
DATEADD(QUARTER, 2, '2023-01-31') AS add_two_quarters,
DATEADD(MONTH, 3, '2023-01-31') AS add_three_months,
DATEADD(WEEK, 2, '2023-03-15') AS add_two_weeks,
DATEADD(DAY, 10, '2023-03-21') AS add_ten_days,
DATEADD(HOUR, 12, '2023-03-10 08:30:00') AS add_twelve_hours,
DATEADD(MINUTE, 45, '2023-03-10 08:30:00') AS add_forty_five_minutes,
DATEADD(SECOND, 30, '2023-03-10 08:30:00') AS add_thirty_seconds;
Otras partes de fecha compatibles son MILLISECOND
, MICROSECOND
, NANOSECOND
y CENTURY
.
Ten en cuenta que en los años bisiestos y para las fechas de fin de mes, Snowflake realiza los ajustes oportunos. Por ejemplo, si se añade un año al 28 de febrero de 2023, se obtiene el 29 de febrero de 2024 (año bisiesto).
Utilizar valores negativos para restar
La función DATEADD
también puede restar intervalos de tiempo utilizando valores negativos:
-- Subtracting time intervals with negative values
SELECT
DATEADD(MONTH, -3, '2023-03-15') AS three_months_ago,
DATEADD(DAY, -7, CURRENT_DATE()) AS one_week_ago,
DATEADD(HOUR, -48, CURRENT_TIMESTAMP()) AS two_days_ago_time;
Explicación:
- La primera expresión resta 3 meses al 15 de marzo de 2023
- La segunda expresión resta 7 días a la fecha de hoy
- La tercera expresión resta 48 horas (2 días) a la marca de tiempo actual
Salida:
THREE_MONTHS_AGO ONE_WEEK_AGO TWO_DAYS_AGO_TIME
---------------- ------------ -----------------
2025-02-10 2025-05-03 2025-05-08 07:22:30.183 -0700
Comportamiento del tipo de devolución
El tipo de retorno de DATEADD
depende del tipo de expresión de entrada:
- Cuando se aplica a un
DATE
, devuelve unDATE
- Cuando se aplica a un
TIMESTAMP
, devuelve unTIMESTAMP
- Cuando se aplica a un
TIME
, devuelve unTIME
DATEADD
conserva el tipo de datos original de tu entrada. Es importante comprender este comportamiento porque afecta a cómo puedes utilizar el resultado en operaciones posteriores.
Por ejemplo, si añades horas a un valor FECHA, el resultado seguirá siendo una FECHA (lo que significa que la parte de la hora se trunca), mientras que si añades horas a un TIMESTAMP
se mantendrán los componentes de fecha y hora.
Comprender estos parámetros y comportamientos básicos de la función DATEADD
sentará las bases para los casos de uso más avanzados que exploraremos en secciones posteriores.
Ejemplos prácticos y casos de uso de DATEADD
Ahora que entendemos la sintaxis y el comportamiento de DATEADD
, vamos a explorar aplicaciones prácticas utilizando nuestros datos de muestra. En esta sección, demostraremos cómo DATEADD
puede resolver problemas empresariales reales y mejorar las capacidades de análisis de datos.
Calcular las fechas de renovación de las suscripciones
Un requisito empresarial habitual es determinar cuándo se renovarán las suscripciones en función de su ciclo de facturación:
-- Calculate subscription renewal dates
SELECT
subscription_id,
customer_id,
plan_name,
start_date,
billing_cycle,
CASE
WHEN billing_cycle = 'Monthly' THEN DATEADD(MONTH, 1, start_date)
WHEN billing_cycle = 'Quarterly' THEN DATEADD(MONTH, 3, start_date)
WHEN billing_cycle = 'Annual' THEN DATEADD(YEAR, 1, start_date)
END AS first_renewal_date
FROM subscriptions;
Explicación: Esta consulta calcula la primera fecha de renovación de cada suscripción en función de su ciclo de facturación. Utilizamos DATEADD
con diferentes partes de fecha (MONTH
o YEAR
) y valores (1, 3 o 1) según el ciclo de facturación.
Salida:
Observa cómo Snowflake gestiona correctamente la transición del 28 de febrero al 28 de febrero (año bisiesto).
Previsión de plazos de entrega
Utilicemos DATEADD para calcular los plazos estimados de entrega de los pedidos:
-- Calculate delivery windows based on order timestamps
SELECT
order_id,
customer_id,
order_timestamp,
delivery_estimate,
DATEADD(HOUR, -12, delivery_estimate) AS delivery_window_start,
delivery_estimate AS delivery_window_end,
DATEDIFF('HOUR', order_timestamp, delivery_estimate) AS estimated_hours_to_delivery
FROM orders
ORDER BY order_id;
Explicación: Esta consulta:
- Crea una ventana de entrega de 12 horas restando 12 horas al plazo de entrega estimado
- Muestra tanto el inicio como el final de la ventana de entrega
- Calcula el tiempo total estimado de entrega en horas
Salida:
Crear una tabla de dimensiones de fecha
El análisis de series temporales suele requerir una tabla de dimensiones de fecha. Vamos a crear uno utilizando DATEADD:
-- Generate a date dimension table for analysis
WITH date_dimension AS (
SELECT
DATEADD(DAY, seq4(), '2023-01-01') AS calendar_date
FROM TABLE(GENERATOR(ROWCOUNT => 365))
)
SELECT
calendar_date,
YEAR(calendar_date) AS year,
MONTH(calendar_date) AS month,
MONTHNAME(calendar_date) AS month_name,
DAY(calendar_date) AS day,
DAYOFWEEK(calendar_date) AS day_of_week,
DAYNAME(calendar_date) AS day_name,
CASE
WHEN DAYOFWEEK(calendar_date) IN (0, 6) THEN TRUE
ELSE FALSE
END AS is_weekend,
QUARTER(calendar_date) AS quarter
FROM date_dimension
WHERE calendar_date <= '2023-03-31'
ORDER BY calendar_date
LIMIT 10;
Explicación: Esta consulta:
- Utiliza
DATEADD
con un generador de secuencias para crear una serie de fechas para 2023 - Extrae atributos de fecha útiles para cada fecha del calendario
- Filtra hasta el 1T 2023 y muestra los 10 primeros días por brevedad
Salida:
Las tablas de dimensión de fecha mejoran significativamente el rendimiento de los análisis, ya que calculan previamente los atributos de fecha en lugar de computarlos repetidamente en las consultas. Estandarizan la lógica de fechas en toda la organización, garantizando definiciones coherentes de trimestres, fines de semana y otros periodos de tiempo.
Este enfoque reduce los errores y hace que los análisis complejos basados en el tiempo sean más accesibles para los usuarios empresariales. Las dimensiones de fecha también permiten filtrar y agrupar eficazmente por diversas jerarquías temporales como año, trimestre, mes y día.
La función DATEADD
con generación de secuencias ofrece un método sencillo para rellenar estas tablas de dimensiones sin necesidad de introducir datos manualmente.
Esta técnica puede ampliarse para crear calendarios plurianuales o dimensiones temporales especializadas, como calendarios fiscales o cálculos de días laborables. Las columnas adicionales podrían incluir banderas de vacaciones, números de semana o designaciones personalizadas de periodos comerciales, fundamentales para la elaboración de informes precisos.
Una vez creada, esta tabla de dimensiones puede unirse a tablas de hechos para habilitar potentes capacidades de inteligencia temporal en cuadros de mando e informes.
Analizar los eventos programados
Utilicemos DATEADD
para analizar los próximos eventos de mantenimiento programado:
-- Find upcoming events and calculate preparation time
SELECT
event_id,
event_name,
event_timestamp,
duration_minutes,
DATEADD(DAY, -3, event_timestamp) AS preparation_start,
DATEADD(MINUTE, duration_minutes, event_timestamp) AS event_end,
DATEDIFF('MINUTE', CURRENT_TIMESTAMP(), event_timestamp) AS minutes_until_event
FROM events
WHERE event_timestamp > CURRENT_TIMESTAMP()
ORDER BY event_timestamp;
Explicación: Esta consulta:
- Encuentra los próximos eventos (los del futuro)
- Calcula cuándo debe comenzar la preparación (3 días antes del evento)
- Calcula cuándo terminará el evento en función de su duración
- Muestra cuántos minutos faltan para que comience el evento
Como todos los datos de nuestra muestra son de 2023, esta consulta normalmente no mostraría resultados en 2025, pero demuestra conceptualmente cómo analizar los eventos programados.
Cálculo de los periodos de facturación
Para las empresas basadas en suscripciones, es esencial calcular con precisión los periodos de facturación:
-- Generate next 6 billing periods for monthly subscriptions
WITH billing_periods AS (
SELECT
subscription_id,
customer_id,
plan_name,
start_date,
seq AS billing_period_number,
DATEADD(MONTH, seq, start_date) AS billing_period_start,
DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date)) AS billing_period_end
FROM subscriptions
CROSS JOIN (SELECT seq4() AS seq FROM TABLE(GENERATOR(ROWCOUNT => 6)))
WHERE billing_cycle = 'Monthly'
)
SELECT
subscription_id,
customer_id,
plan_name,
billing_period_number,
billing_period_start,
billing_period_end,
DATEDIFF('DAY', billing_period_start, billing_period_end) + 1 AS days_in_period
FROM billing_periods
ORDER BY subscription_id, billing_period_number;
Explicación: Esta consulta:
- Genera los 6 periodos de facturación siguientes para las suscripciones mensuales utilizando un CROSS JOIN con un generador de secuencias (
seq4()
) - Calcula la fecha de inicio sumando los meses en función del número de período mediante
DATEADD(MONTH, seq, start_date)
- Calcula la fecha de finalización como un día antes de que comience el siguiente periodo con
DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date))
Esto garantiza un manejo adecuado de las distintas longitudes de mes (28/29/30/31 días). - Cuenta el número de días de cada período de facturación utilizando
DATEDIFF('DAY', billing_period_start, billing_period_end) + 1
El +1 es necesario porque DATEDIFF devuelve la diferencia entre fechas, sin incluir la fecha final - Filtros para incluir sólo las suscripciones mensuales con la cláusula WHERE
- Ordena los resultados por
subscription_id
y periodo de facturación para una presentación lógica
Salida:
Observa cómo DATEADD
maneja adecuadamente las diferentes longitudes de los meses, asegurando cálculos precisos de los periodos de facturación.
Estos ejemplos demuestran cómo puede aplicarse DATEADD
para resolver problemas empresariales comunes que implican la manipulación de fechas. Combinando DATEADD
con otras funciones SQL, puedes crear potentes consultas para el análisis basado en el tiempo y el procesamiento de datos en Snowflake.
Comparación de DATEADD con las funciones Snowflake relacionadas
Examinemos ahora cómose compara lafunción DATEADD
con otras funciones de Snowflake.
DATEADD vs DATEDIFF y DATE_TRUNC
Mientras que DATEADD
suma o resta un intervalo de tiempo específico a una fecha, DATEDIFF
calcula la diferencia entre dos fechas en una unidad especificada. DATEDIFF
devuelve un número entero que representa el número de unidades completas entre fechas, por lo que es ideal para calcular duraciones como la duración de una suscripción o los días transcurridos desde la realización de un pedido .
DATE_TRUNC
por el contrario, elimina la precisión de un valor de fecha/hora ajustando las partes más pequeñas de la fecha a sus valores por defecto, redondeando efectivamente hacia abajo a una unidad especificada.
-- Comparing the three functions
SELECT
DATEADD(MONTH, 3, '2023-01-15'::DATE) AS added_three_months,
DATEDIFF(DAY, '2023-01-15'::DATE, '2023-04-15'::DATE) AS days_between,
DATE_TRUNC(MONTH, '2023-01-15'::DATE) AS truncated_to_month;
Salida:
Cuándo utilizar cada función (criterios de decisión)
Utiliza DATEADD
cuando necesites adelantar o retrasar fechas en intervalos de tiempo concretos, como para calcular fechas de renovación futuras, ventanas de entrega o calendarios de pago .
Elige DATEDIFF
al medir el tiempo transcurrido entre dos fechas, como calcular la edad, la duración o las métricas basadas en el tiempo para elaborar informes.
DATE_TRUNC
es la más adecuada cuando necesitas agrupar datos por periodos de tiempo (diarios, mensuales, trimestrales), normalizar marcas de tiempo con un nivel de precisión coherente o crear jerarquías temporales para el análisis.
-- Function usage by scenario
SELECT
-- Scenario: Calculate next month's billing date
DATEADD(MONTH, 1, start_date) AS next_billing_date,
-- Scenario: Find how many days the subscription has been active
DATEDIFF(DAY, start_date, CURRENT_DATE()) AS subscription_age_days,
-- Scenario: Group by month for analysis
DATE_TRUNC(MONTH, start_date) AS billing_month
FROM subscriptions
LIMIT 3;
Tratamiento de casos extremos y resolución de problemas
Si tienes problemas al utilizar la función, aquí tienes algunos consejos que pueden ayudarte a salir del paso.
Ajustes de fin de mes y año bisiesto
Snowflake maneja de forma inteligente las fechas de fin de mes cuando se utiliza DATEADD
. Al añadir meses a una fecha de fin de mes, Snowflake devuelve el último día del mes resultante, independientemente del número de días. Este comportamiento preserva el concepto de "fin de mes" aunque los meses tengan distinta duración.
-- Month-end handling examples
SELECT
DATEADD(MONTH, 1, '2023-01-31') AS jan_to_feb, -- January 31 + 1 month = February 28
DATEADD(MONTH, 1, '2023-02-28') AS feb_to_mar, -- February 28 + 1 month = March 31
DATEADD(MONTH, 1, '2024-01-31') AS jan_to_feb_leap, -- January 31 + 1 month in leap year = February 29
DATEADD(YEAR, 1, '2023-02-28') AS normal_to_leap; -- February 28, 2023 + 1 year = February 29, 2024
Consideraciones sobre el huso horario y el horario de verano
Cuando trabajas con datos de fecha y hora que incluyen husos horarios (TIMESTAMP_TZ
), DATEADD tiene en cuenta automáticamente las transiciones del horario de verano. Esto garantiza que los cálculos sigan siendo precisos a través de los cambios de hora, pero a veces puede producir resultados inesperados al añadir intervalos específicos alrededor de los límites del horario de verano.
-- Time zone handling with DST transition
SELECT
event_timestamp,
DATEADD(HOUR, 24, event_timestamp) AS add_24h,
DATEADD(DAY, 1, event_timestamp) AS add_1d
FROM (
SELECT CONVERT_TIMEZONE('America/Los_Angeles', '2023-03-12 01:30:00')::TIMESTAMP_TZ AS event_timestamp
); -- During spring forward DST transition
Cuando trabajes con marcas de tiempo alrededor de las transiciones DST, ten en cuenta que sumar 24 horas puede no equivaler a sumar 1 día. El enfoque "add_1d" suele producir resultados más intuitivos en las aplicaciones empresariales.
Errores comunes y sus soluciones
Los errores de DATEADD suelen deberse a desajustes de tipo o a entradas no válidas. Aquí tienes problemas comunes y soluciones:
-- Common error: Invalid date part
-- Error: "Invalid date part 'DATE'"
SELECT DATEADD(DATE, 1, '2023-01-15'); -- Incorrect: 'DATE' is not a valid date part
SELECT DATEADD(DAY, 1, '2023-01-15'); -- Correct: use 'DAY' instead
-- Common error: Type mismatch
-- Error: "Numeric value 'abc' is not recognized"
SELECT DATEADD(DAY, 'abc', '2023-01-15'); -- Incorrect: second parameter must be numeric
SELECT DATEADD(DAY, 10, '2023-01-15'); -- Correct: use numeric value
-- Common error: Invalid date format
-- Error: "Date 'January 15, 2023' is not recognized"
SELECT DATEADD(DAY, 1, 'January 15, 2023'); -- Incorrect: unrecognized date format
SELECT DATEADD(DAY, 1, '2023-01-15'); -- Correct: use YYYY-MM-DD format
Consejos para optimizar el rendimiento
Para obtener el mejor rendimiento al utilizar DATEADD
en operaciones a gran escala:
- Aplica
DATEADD
en las etapas de transformación y no de filtrado, siempre que sea posible. - Precalcular cálculos de fechas comunes en tablas temporales o CTEs cuando se utilizan varias veces.
- Considera el uso de DATE_TRUNC antes de
DATEADD
para cálculos basados en rangos para mejorar el uso del índice. - Para operaciones por lotes como la generación de rangos de fechas, utiliza generadores de secuencias (como se muestra en el ejemplo de la dimensión fecha) en lugar de CTEs recursivos.
-- Inefficient pattern (calculating same value repeatedly)
SELECT *
FROM large_table
WHERE DATEADD(MONTH, 1, event_date) < CURRENT_DATE();
-- More efficient approach (calculate once)
WITH calc_dates AS (
SELECT *, DATEADD(MONTH, 1, event_date) AS next_month_date
FROM large_table
)
SELECT *
FROM calc_dates
WHERE next_month_date < CURRENT_DATE();
Comprender estos casos extremos y las técnicas de optimización te ayudará a escribir una lógica de manipulación de fechas más robusta en Snowflake, evitando los errores comunes y maximizando el rendimiento.
Conclusión
La función Snowflake DATEADD
es una herramienta esencial para la manipulación de fechas que permite a los profesionales de los datos realizar la aritmética del tiempo en varias partes de la fecha. Maneja las fechas de fin de mes, los años bisiestos, los husos horarios y las transiciones del horario de verano con un comportamiento predecible. Hemos visto cómo DATEADD
puede aplicarse a la gestión de suscripciones, el seguimiento de entregas, la creación de dimensiones de fecha y los cálculos de facturación. Cuando se utiliza junto con DATEDIFF
y DATE_TRUNC
, se convierte en un componente básico para el análisis basado en el tiempo en Snowflake.
Para obtener más conocimientos sobre Snowflake, consulta el programa de habilidades Snowflake Foundations o explora Crear tablas en Snowflake para desarrollar tus habilidades de modelado de datos. La guía Utilizar el viaje en el tiempo de Snowflake complementa tu comprensión de las operaciones temporales. Los principiantes deben empezar con el tutorial Snowflake para principiantes.
Preguntas frecuentes sobre DATEADD Snowflake
¿Para qué sirve la función DATEADD de Snowflake?
La función Snowflake DATEADD
se utiliza para realizar operaciones aritméticas con fechas, sumando o restando intervalos de tiempo específicos (como días, meses o años) a valores de fecha, hora o fecha-hora. Se suele utilizar para calcular fechas futuras, renovaciones de suscripciones y análisis de series temporales.
¿Cómo gestiona DATEADD las fechas de fin de mes y los años bisiestos?
DATEADD
trata de forma inteligente las fechas de fin de mes, conservando el concepto de "fin de mes". Al añadir meses a una fecha de fin de mes, devuelve el último día del mes resultante. Para los años bisiestos, ajusta automáticamente las fechas en consecuencia (por ejemplo, añadir un año al 28 de febrero de 2023, da como resultado el 29 de febrero de 2024).
¿Cuáles son las partes de fecha admitidas en DATEADD?
DATEADD
admite varias piezas de fecha, incluida YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND, and CENTURY
. Cada parte de fecha te permite sumar o restar esa unidad de tiempo específica a un valor de fecha.
¿Se puede utilizar DATEADD con diferentes tipos de marcas de fecha y hora?
Sí, DATEADD
funciona con todos los tipos de marcas de tiempo Snowflake: TIMESTAMP_NTZ
(Sin zona horaria), TIMESTAMP_TZ
(Con zona horaria) y TIMESTAMP_LTZ
(Zona horaria local). Conserva el tipo de marca de tiempo y maneja las conversiones de zona horaria automáticamente.
¿En qué se diferencian DATEADD de DATEDIFF y DATE_TRUNC?
Mientras que DATEADD
modifica las fechas añadiendo o restando intervalos de tiempo, DATEDIFF
calcula la diferencia entre dos fechas en una unidad especificada, y DATE_TRUNC
elimina la precisión de un valor de fecha/hora redondeando hacia abajo a una unidad especificada. Tienen finalidades distintas pero complementarias en la manipulación de fechas.

Soy un creador de contenidos de ciencia de datos con más de 2 años de experiencia y uno de los mayores seguidores en Medium. Me gusta escribir artículos detallados sobre IA y ML con un estilo un poco sarcastıc, porque hay que hacer algo para que sean un poco menos aburridos. He publicado más de 130 artículos y un curso DataCamp, y estoy preparando otro. Mi contenido ha sido visto por más de 5 millones de ojos, 20.000 de los cuales se convirtieron en seguidores tanto en Medium como en LinkedIn.