Tema SQL
GETDATE() (SQL Server)
Fecha y hora actual del servidor como datetime (sin offset). Uso parecido a NOW() / CURRENT_TIMESTAMP en MySQL; menor precisión que SYSDATETIME().
Descripción
GETDATE() toma el reloj del sistema operativo del host de SQL Server; la zona horaria es la configurada en el SO (no lleva información de desplazamiento como datetimeoffset). Para auditorías multi-región suele preferirse GETUTCDATE() o almacenar datetimeoffset. La precisión es de 3,33 ms (datetime clásico); para mayor precisión usa SYSDATETIME(). En MySQL NOW() y CURRENT_TIMESTAMP devuelven fecha/hora de la sesión (time_zone). No uses GETDATE() como valor correlacionado que deba ser idéntico en toda la sentencia si necesitas un instante único: asigna a variable o usa SYSDATETIME() según política.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
GETDATE()
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Tipo
- datetime (sin zona; cuidado al comparar con offset).
- MySQL
- NOW(), CURRENT_TIMESTAMP, SYSDATE() (según modo SQL).
- UTC
- GETUTCDATE() si necesitas horario universal.
Ejemplos
Ejemplo 1
SELECT GETDATE() AS ahora_local;
INSERT INTO logs (mensaje, creado_en)
VALUES (N'inicio', GETDATE());
Ejemplo 2
SELECT DATEADD(MINUTE, 30, GETDATE()) AS recordatorio;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.