Para aquellos que estamos acostumbrados a utilizar la función SYSDATE en Oracle Developer, en ocasiones, se nos hace extraño el cambio a Microsoft SQL Server. Andamos un poco perdidos. En esta ocasión vamos a explicar cómo usar SYSDATE en SQL Server:
En Microsoft SQL Server no existe la función SYSDATE().
- Debemos utilizar GETDATE() o SYSDATETIME().
- Adjunto dos ejemplos de consultas SQL donde tendremos en cuenta que, al contrario que en Oracle Developer, en Microsoft SQL Server no se utiliza DUAL.
- En esta web explican muy bien el por qué: SQL SERVER – SELECT * FROM dual – Dual Equivalent.
- Adjunto dos ejemplos de consultas SQL donde tendremos en cuenta que, al contrario que en Oracle Developer, en Microsoft SQL Server no se utiliza DUAL.
--GETDATE()
SELECT GETDATE();
--SYSDATETIME()
SELECT SYSDATETIME();
GETDATE() y SYSDATETIME() devuelven tipo datetime y datetime2.
- SYSDATETIME() devuelve mayor precisión (datetime2).
- Os recomiendo echar un vistazo a las siguientes webs:
- Si vamos a comparar el dato resultante con un campo DATE, deberemos utilizar la función CONVERT para que nuestra comparación sea correcta y evitar errores
- Por si os interesa, en el siguiente enlace os explico la Diferencia entre CAST y CONVERT en SQL y cómo utilizar.
/*Ejemplo: Obtener registros cuya fecha origen (tipo DATE) sea menor que la fecha actual
y su fecha final (tipo DATE) sea mayor que la fecha actual.
Teniendo en cuenta que comparamos DATE y DATETIME:
*/
SELECT * FROM tabla
WHERE (CONVERT(date, FECHA_ORIGEN) < CONVERT(date, SYSDATETIME()))
AND (CONVERT(date, FECHA_FINAL) > CONVERT(date, SYSDATETIME()))
Os comparto el siguiente tutorial donde explican cómo usar estas funciones en SQL Server:
Espero que os sea útil
¡Que seáis felices!
Fuente:
- Microsoft – Documentación de SQL
- SQLshack
- Icon made by Freepik from www.flaticon.com