[SSRS] Stored Proc. automatiche con date odierne

giovedì 27 aprile 2006 - 15.14

Hamelin [FL] Profilo | Junior Member

Un saluto a tutti.

Purtroppo sono molto inesperto riguardo le Stored Procedure di SSRS, quindi perdonate se la seguente richiesta di fattibilità è banale.

In pratica ho una SP che devo eseguire automaticamente sul server ogni giorno. Questa SP dovrebbe contenere al suo interno una serie di variabili che dovrebbero cambiare automaticamente a seconda del giorno di esecuzione

Ad esempio, avendo le date nel formato '2006-04-27', dovrei costruire la variabile @InizioMese in questo modo:

SET @InizioMese = YEAR(NOW() ) + '-' + MONTH(NOW()) + '-01'

Oltre a questa, le altre variabili che dovrei costruire, e di cui vi richiedo se conoscete un modo per generarle automaticamente, sarebbero:

@FineMese (quindi che automaticamente ci metta il 28, o il 30, o il 31)
@InizioMeseScorso (quindi che automaticamente riconosca che, se il mese è gennaio, deve prendere dicembre del mese precedente)

Di nuovo perdono se la domanda è eccessivamente banale, e grazie per l'attenzione

alx_81 Profilo | Guru

usa questa funzione..

CREATE FUNCTION [dbo].[MDate](@Year int, @Month int, @Day int)
RETURNS DATETIME
AS
BEGIN
/*
Questo è l'utilizzo della funzione
MDate(Year(@Date),Month(@Date),1) -- primo giorno del mese
MDate(Year(@Date),Month(@Date)+1,1)-1 -- ultimo giorno del mese
MDate(Year(@Date),12,31) -- ultimo giorno dell'anno
MDate(Year(@Date),Month(@Date)+6,1) -- il primo giorno del mese con sei mesi di decorrenza dalla @Date
MDate(Year(@Date),Month(@Date),1)-1 -- ultimo giorno del mese precedente
*/

declare @d datetime;
declare @dOut datetime;
set @d = dateadd(year,(@Year - 1753),'1/1/1753');
set @d = dateadd(month,@Month - 1,@d);
set @dOut = dateadd(day,@Day - 1,@d)

return @dOut
END

Questa ti torna un datetime.. se volessi varchar è così

CREATE FUNCTION [dbo].[MDate](@Year int, @Month int, @Day int)
RETURNS VARCHAR(10)
AS
BEGIN
/*
Questo è l'utilizzo della funzione
MDate(Year(@Date),Month(@Date),1) -- primo giorno del mese
MDate(Year(@Date),Month(@Date)+1,1)-1 -- ultimo giorno del mese
MDate(Year(@Date),12,31) -- ultimo giorno dell'anno
MDate(Year(@Date),Month(@Date)+6,1) -- il primo giorno del mese con sei mesi di decorrenza dalla @Date
MDate(Year(@Date),Month(@Date),1)-1 -- ultimo giorno del mese precedente
*/

declare @d datetime;
declare @dOut varchar(10);
declare @d2 as datetime
set @d = dateadd(year,(@Year - 1753),'1/1/1753');
set @d = dateadd(month,@Month - 1,@d);
set @d2 = dateadd(day,@Day - 1,@d)
set @dOut = CAST(year(@d2) as varchar(4)) + '-' + RIGHT('00' + CAST(month(@d2) as varchar(2)),2) + '-' + RIGHT('00' + CAST(day(@d2) as varchar(2)),2)

return @dOut
END

una volta creata la function fai

select dbo.MDate(year(tuadata),month(tuadata)+1,1)-1
-- otterrai il fine mese attuale
select dbo.MDate(Year(@Date),Month(@Date)-1,1)
-- per il mese precedente (il primo)

prova.. =)
Alx81 =)

http://blogs.dotnethell.it/suxstellino

freeteo Profilo | Guru

ciao ad entrmbi,
scusate ma cosa centra questo problema con ssrs ovvero Sql Server Reporting Services? è piuttosto 1a cosa di sql, mi sa che noin è la stanza adatta a questo thread...

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Hamelin [FL] Profilo | Junior Member

L'ho messa qui anzichè nella stanza di SQL perchè pensavo si dovessero usare delle funzioni particolari delle Stored Procedure di SqlServerReportingService, e quindi una cosa un po' più "estesa" del normale SQL...

Comunque mi scuso dell'errore, e provo a usare la funzione fornita

alx_81 Profilo | Guru

ciao
devo imparare a leggere i titoli delle stanze..
così poi posterò di conseguenza..
mi scuso.
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Hamelin [FL] Profilo | Junior Member

Scusate, edito

Perchè dopo mezza giornata di prove trovo sempre la soluzione un minuto dopo aver postato? -_-

freeteo Profilo | Guru

>Perchè dopo mezza giornata di prove trovo sempre la soluzione
>un minuto dopo aver postato?
è la beffa di chi lavora con il software, ti direi 1classico ...


ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Hamelin [FL] Profilo | Junior Member

Hehe :)

Beh, comunque volevo ringraziare Alx e segnalare il thread come risolto: la funzione che mi ha fornito è esattamente ciò di cui avevo bisogno, grazie mille!

alx_81 Profilo | Guru

mitico!! =)
Alx81 =)

http://blogs.dotnethell.it/suxstellino
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5