Nuevas funciones de fecha y hora en SQL Server 2012: EOMONTH y las funciones FROMPARTS
|
SQL Server 2012 introduce varias funciones nuevas de fecha y hora, por un lado la función EOMONTH que nos permite calcular cuál es el último día de un mes (verdaderamente útil, sobre todo para cálculos financieros y similares), y por otro lado las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS, DATETIMEOFFSETFROMPARTS y SMALLDATETIMEFROMPARTS, las cuales nos permiten obtener una fecha y/u hora desde los valores enteros de sus partes (año, mes, día, hora, minutos, segundos, etc.), también de gran utilidad. |
SQL Server 2012 introduce la nueva función EOMONTH (que permite calcular el último día de un mes) y las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS, DATETIMEOFFSETFROMPARTS y SMALLDATETIMEFROMPARTS (que permite obtener una fecha y/o hora desde los valores numéricos que representan sus partes, como el año, mes, día, hora, etc.). Una interesante aportación a SQL Server 2012, que facilitará a los desarrolladores cómo trabajar con fechas en SQL Server.
La función EOMONTH
La función EOMONTH permite obtener el último día de un mes, un cálculo muy común (especialmente en entorno financieros, aunque también hay muchos más casos), que a partir de SQL Server 2012 resulta mucho más fácil, pudiendo ejecutarse consultas SQL como la del siguiente ejemplo.
SELECT EOMONTH(GETDATE()) AS LastDayCurrentMonth ,EOMONTH(GETDATE(), 6) AS LastDaySixMonthsLater
|
A continuación se muestra el resulta de ejecución de la anterior consulta SQL.
Así que, ya no es necesario crear nuestras propias funciones, ni preocuparnos de si el año es bisiesto o no para calcular el último día de Febrero ;-)
Que caña, me ha traído a la cabeza unos cuantos recuerdos de una aplicación de Gestión de Fondos Hipotecarios que estuve desarrollando hace ya un porrón de años, cuando esta Syntax. Tela.
Las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS, DATETIMEOFFSETFROMPARTS, y SMALLDATETIMEFROMPARTS
Las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS, DATETIMEOFFSETFROMPARTS, y SMALLDATETIMEFROMPARTS permiten obtener una fecha y/o hora desde los valores enteros de sus partes.
Esto que puede parecer una tontería a simple vista, resulta de gran utilidad, ya que en muchas ocasiones tenemos la información de una fecha y/u hora segregada en sus diferentes partes. En estos escenarios, antiguamente debíamos concatenar las diferentes partes (ej: día, mes y año) para formar una cadena de texto que represente dicha información de fecha y/u hora, para seguidamente realizar un Casting al correspondiente tipo de dato de fecha y/u hora. Una codificación algo engorrosa, que afortunadamente queda bastante simplificada con las nuevas funciones disponibles en SQL Server 2012. A continuación se muestran un par de consultas SQL de ejemplo utilizando estas nuevas funciones.
SELECT DATEFROMPARTS(2012, 12, 31) ,TIMEFROMPARTS(15, 30, 0, 0, 7) ,DATETIMEFROMPARTS(2012, 12, 31, 15, 30, 0, 0)
SELECT DATETIME2FROMPARTS(2012, 12, 31, 15, 30, 0, 0, 0) ,DATETIMEOFFSETFROMPARTS(2012, 12, 31, 15, 30, 0, 0, -7, 0, 7) ,SMALLDATETIMEFROMPARTS(2012, 12, 31, 15, 30)
|
El resultado de la ejecución de las consultas SQL anteriores sería el siguiente.
Francamente cómodo. Muchas veces nos llegará así la información, quizás porque la entrada de datos se realiza desde un formulario que obtiene la información ya segregada en sus diferentes partes, o por cualquier otro motivo.
Despedida y Cierre
En el presente artículo hemos visto las nuevas funciones de fecha y hora introducidas en SQL Server 2012, por un lado la función EOMONTH para calcular el último día de un mes, y por otro lado las diferentes funciones disponibles para obtener una fecha y/u hora desde el valor numérico de sus diferentes partes, es decir, las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS , DATETIMEOFFSETFROMPARTS, y SMALLDATETIMEFROMPARTS.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.
|
]
[Autor: GuilleSQL]
|
|
|