T-SQL: Funzione per creare una datetime

/* La funzione DATEFROMPARTS, che crea una data a partire dalle sue parti è presente solo da SQL Server 2012. Dato che uso SQL Server 2008 R2 ho creato una funzione che la replica: */


CREATE FUNCTION dbo.CreaData(@Anno AS int, @Mese AS int, @Giorno as int, @Ora as int = 0, @Minuti as int = 0, @Secondi as int = 0)

RETURNS DATETIME

AS
BEGIN
    
    DECLARE @Data as DATETIME
    DECLARE @AnnoN AS char(5), @MeseN AS char(3), @GiornoN as char(3), @OraN as char(3), @MinutiN as char(3), @SecondiN as char(2)
    SET @Data=NULL
    
    SET @AnnoN = convert(char(4),@Anno)+'-'
    SET @MeseN = convert(char(2),@Mese)+'-'
    SET @GiornoN = convert(char(2),@Giorno)+' '
    SET @OraN = convert(char(2),@Ora)+':'
    SET @MinutiN = convert(char(2),@Minuti)+':'
    SET @SecondiN = convert(char(2),@Secondi)
       
SET @Data = CONVERT(datetime, ''+@AnnoN+@MeseN+@GiornoN+@OraN+@MinutiN+@SecondiN+'')
  
    RETURN @Data
       
END


/* Per utilizzarla inserisco come parametri, nell'ordine: anno, mese, giorno, ore, minuti, secondi: inserendo "default" al posto di uno degli ultimi 3 sarà utilizzato il valore di default (0) */


SELECT dbo.CreaData(2016,9,30,12,43, default)



No comments:

Post a Comment