Ottenere con una funzione il primo giono del mese successivo e cambio ...

mercoledì 02 luglio 2008 - 16.33

trinity Profilo | Guru

Salve ragazzi,
ho un record composto dai seguenti campi:

codice,
dataarrivo,
datapartenza
annogestionale

pertanto un esempio di dati è il seguente:

1 - 30/12/2007 - Null - 2007

come potet vedere l'arrivo è il 30/12/2007, nessuna partenza e annohestionale 2007

questo record non avevdno partenza devo portarlo al mese successivo:

ho creato questa funzione per calcolare il primo giorno del mese successivo:
CREATE FUNCTION [dbo].[GetFirstMonthDay_1] (@Date datetime) RETURNS datetime WITH EXECUTE AS CALLER AS BEGIN DECLARE @DateInt datetime SET @DateInt = DATEADD(day, -1, DATEADD(month, 1, CONVERT(char( 6),@Date, 112) + '01')+1) RETURN(@DateInt) END

solo che ora mi serve da vedere che quando l'ultimo mese è 12 ossia dicembre il successivo giorno del mese successivo dovrà essere: 01/01/2008 e però devo ricavarmi una funzione che mi restituica anche l'anno successivo...
In quanto facendo come ora io mi trovo a scrivere:

1 - 01/01/2008 - Null - 2007

invece deve essere:

1 - 01/01/2008 - Null - 2008

Come faccio?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>ho creato questa funzione per calcolare il primo giorno del mese
>successivo:
Nel thread http://www.dotnethell.it/forum/messages.aspx?ThreadID=23777 dicevi: "Sisi Lorenzo avevo capito ed ho capito...solo che oggi sono fuso di testa e ho aperto inutilmente questo post perchè da solo avevo già risolto tra parentesi come ha detto te."

A me non sembra

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

E ho capito come calcolare il primo giorno del mese successivo, sia con il tuo esempio sia con quello che utilizzo io.
Ma ora devo creare una funzione che quando il giorno che sto elaborando ha come mese 12, il giorno del mese successivo sara 01/01 e mi devo ricavare a paret l'anno successivo:

ossia sei ho 30/12/2007 con anno 2007
dovrò avere 01/01/2008 con anno 2008 a parte

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>E ho capito come calcolare il primo giorno del mese successivo,
>sia con il tuo esempio sia con quello che utilizzo io.
Se esegui la mia funzione mettendo come data x dicembre 2008 avrai come risultato 1 gennaio 2009.

>Ma ora devo creare una funzione che quando il giorno che sto
>elaborando ha come mese 12, il giorno del mese successivo sara
>01/01 e mi devo ricavare a paret l'anno successivo:
>
>ossia sei ho 30/12/2007 con anno 2007
>dovrò avere 01/01/2008 con anno 2008 a parte

Che significa "con anno 2008 a parte"?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

anche con la mia esce..solo che io vorrei estrapolare a parte solo l'anno..ti spiego: io scrivo questa insert:

Insert Into archivio_mov Select codalbergo,codcomalb,max(nschedina),annogestionale,dbo.GetFirstMonthDay_1(@data_elaborazione),'A',nrcomp,statores,codnazione,comune,provincia,codcomune,codgruppo,'1'
from #tbltemp
where data_partenza is null

vedi c'è una colonna annogestionale. scrivendo questa insert quando scrivo 01/01/2009 l'annogestionale che prendo però è sempre il 2008 ma invece deve passare a 2009

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru


>Insert Into archivio_mov Select codalbergo,codcomalb,max(nschedina),annogestionale,dbo.GetFirstMonthDay_1(@data_elaborazione),'A',nrcomp,statores,codnazione,comune,provincia,codcomune,codgruppo,'1'
>from #tbltemp
>where data_partenza is null
>
>vedi c'è una colonna annogestionale. scrivendo questa insert
>quando scrivo 01/01/2009 l'annogestionale che prendo però è sempre
>il 2008 ma invece deve passare a 2009

Scusa Fabio,

non riesco a capire quello che stai facendo dato che non hai spiegato qual è la struttura della tabella #tbltemp e la logica con la quale la popoli, ma potresti risolvere agevolmente il problema richiamando 2 volte la funzione GetFirstMonthDay_1, la prima per prendere il primo giorno del mese successivo e la seconda per beccare l'anno (utilizza la funzione CONVERT(char(4), @data_elaborazione, 112)).

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

risolto grazie


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5