Tema SQL
SYSDATETIME() (SQL Server)
Fecha/hora actual como datetime2 (más precisa que GETDATE). Para UTC usa SYSUTCDATETIME(); en MySQL NOW(6) o tipos con fracciones según versión.
Descripción
SYSDATETIME() refleja el instante actual como datetime2 sin offset de zona. Es la opción habitual en código nuevo frente a datetime heredado cuando importa precisión o alinear con columnas datetime2. SYSDATETIMEOFFSET() añade el offset actual del servidor/sesión; SYSUTCDATETIME() devuelve UTC en datetime2. La diferencia práctica con GETDATE() no es solo precisión: tipos distintos en comparaciones y conversiones. En MySQL no hay un único nombre: NOW(6) microsegundos o SYSDATETIME en otros contextos; TIMESTAMP/DATETIME con fracciones según versión.
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.
SYSDATETIME()
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.
- datetime2
- Mayor rango y precisión que datetime legacy.
- GETDATE vs SYS
- Elige uno y sé consistente en tablas y variables.
- Medición
- Para benchmarks de latencia en SQL, combina con cuidado con SET STATISTICS TIME.
Ejemplos
Ejemplo 1
SELECT SYSDATETIME() AS alta_precision;
SELECT DATEDIFF_BIG(MILLISECOND, @inicio, SYSDATETIME()) AS ms_transcurridos;
Ejemplo 2
SELECT SYSUTCDATETIME() AS utc,
SYSDATETIME() AS local_mix;
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.