Função para criar nova data em SQL

O SQL 2012 e superior tem a função DATEFROMPARTS para criar uma nova data a partir dos inteiros Ano, Mes e Dia, mas as versões 2000, 2005 e 2008 como é que fica?

Fica assim: você mesmo faz a função.



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ############################################################################################################################################
-- # NOME   : DATEFROMPARTS
-- # PRODUTO  : SQL Server
-- # DEVELOPER  : Vitor Luiz Rubio
-- # COPYRIGHT  : 
-- # OBJETIVO  : Gerar uma data a partir dos seus componentes inteiros
-- # VERSAO   : 1.0
-- # DT. CRIACAO : 2013-04-18
-- # DT. ALTERACAO : 
-- #
-- # DEPENDENCIAS :
-- # 
-- # DEPENDENTES :
-- #
-- # HISTÓRICO
-- # 2013-04-18 : Criação
-- #  
-- ############################################################################################################################################ 

CREATE FUNCTION DATEFROMPARTS
(
 @Year int,
 @Month int,
 @Day int
)
RETURNS datetime
AS
BEGIN
 --data 0 é 1/1/1900
 
 set @Year = @Year - 1900;
 set @Month = @Month - 1;
 set @Day = @Day - 1;

 return dateadd(day, @Day, dateadd(month, @Month, dateadd(year, @Year, 0)))
 
 --teste
 --select dbo.DATEFROMPARTS(2013, 4, 18)
 --select dbo.DATEFROMPARTS(2014, 1, 1)
 --select dbo.DATEFROMPARTS(1983, 2, 14)
 
END
GO



Comentários

Postagens mais visitadas deste blog

Detectar o encoding de um arquivo para não corromper ao transformá-lo

erro "ora-12154: tns: não foi possível resolver o identificador de conexão especificado"

Quebras de linha no Delphi 2010