Estas funciones son 6, una para que tipo de fecha que maneja el SQL Server. Tomemos como ejemplo la primera para poder fijar la idea.
Si yo tengo tres campos numericos, en uno guardo el dia, en otro el mes y en otro el año, antes debíamos hacer varias operaciones para poder pasar eso a una fecha (string mediante), lo cual siempre me pareció extraño, porque el camino inverso (dada una fecha obtener el número del mes) era posible facilmente con la función DATEPART.
Ahora utilizando la función DATEFROMPARTS le pasamos esos 3 argumentos y nos retorna algo de tipo fecha.
Si en lugar de hacerlo para una fecha lo queremos hacer para una hora, tenemos TIMEFROMPARTS, y así para que tipo de datos "tiempo" que tiene el SQL Server.
Veamos el ejemplo:
-- ============================================= -- Create: Andrés Aiello -- Create date: 13/01/12 -- Description: Manejo de fechas en SQL 2012 -- ============================================= SELECT DATEFROMPARTS ( 2010, 12, 31 ) AS Salida; SELECT TIMEFROMPARTS ( 23, 59, 59, 0, 0 ) AS Salida; SELECT SMALLDATETIMEFROMPARTS ( 2010, 12, 31, 23, 59 ) AS Salida SELECT DATETIMEFROMPARTS ( 2010, 12, 31, 23, 59, 59, 0 ) AS Salida; SELECT DATETIME2FROMPARTS ( 2010, 12, 31, 23, 59, 59, 0, 0 ) AS Salida; SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Salida;
Pros
- Es muy cómodo de utilizar
- Era algo deseable visto que el camino inverso (fecha->número) ya era posible con DATEPART
- Deja de ser necesario y trabajoso pasar por un VARCHAR para poder transformar una fecha desde sus partes numéricas
Contras
- Para una transformación es DATEPART pero la vuelta es con otra, no junta los conceptos
- Muchas funciones para lo mismo en lugar de hacer una sobrecarga y que lo defina el motor
- Funciones muy "sensibles". Siempre esperan todos los parámetros. Calculo que ésto es consecuencia del punto anterior
Espero sus opiniones.
Saludos!
No hay comentarios:
Publicar un comentario