Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Crystal Reports e reportistica
[SSRS] Stored Proc. automatiche con date odierne
giovedì 27 aprile 2006 - 15.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Hamelin [FL]
Profilo
| Junior Member
65
messaggi | Data Invio:
gio 27 apr 2006 - 15:14
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
8.814
messaggi | Data Invio:
gio 27 apr 2006 - 17:22
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
6.542
messaggi | Data Invio:
gio 27 apr 2006 - 22:03
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
65
messaggi | Data Invio:
ven 28 apr 2006 - 08:57
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
8.814
messaggi | Data Invio:
ven 28 apr 2006 - 09:16
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
65
messaggi | Data Invio:
mer 3 mag 2006 - 14:56
Scusate, edito
Perchè dopo mezza giornata di prove trovo sempre la soluzione un minuto dopo aver postato? -_-
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 4 mag 2006 - 00:55
>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
65
messaggi | Data Invio:
gio 4 mag 2006 - 10:21
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
8.814
messaggi | Data Invio:
gio 4 mag 2006 - 10:33
mitico!! =)
Alx81 =)
http://blogs.dotnethell.it/suxstellino
Torna su
Stanze Forum
Elenco Threads
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 !