Gestione date in sql

mercoledì 10 febbraio 2010 - 10.29

trinity Profilo | Guru

Ragazzi purtroppo ho una tabella di un programma la cui struttura non può essere modificata....(se fosse per me lo farei) in pratica ecco la tabella originaria:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ora visto che io ho bisogno di un campo data e mi hanno detto che la struttura di questa tabella non posso variarla allora ho fatto questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

dato che neanche il codice del programma stesso può essere modificato allora ho pensato bene di inserire la nuova colonna alla fine della tabella in modo tale da non andare a incasinare qualche riga di codice....
Solo che ora il mio problema è aggiornare il campo data...in pratica questi programmatori hanno creato una stored per salvare i dati nella prima tabella:

CREATE PROCEDURE [dbo].[Notifica_new] ( @CodAlbergo Int, @Codcomune Int, @tiponotifica Varchar(7) ) AS BEGIN INSERT INTO dbo.notifiche (CodAlbergo,codcomune,tiponotifica) VALUES (@CodAlbergo,@codcomune,@tiponotifica) END

io ho pensato di ampliare questa stored lasciando intatto l'insert e poi aggiungendo un update per aggiornare il campo "data".
Ora qui nasce il problema. Nel campo data devo inserire una specifica data in base al valore inserito nel "tiponotifica"
In pratica un esempio dovrebbe essere questo:

Insert into (codalbergo,codcomune,tiponotifica)Values(1,59032,'2010010')
Insert into (codalbergo,codcomune,tiponotifica)Values(1,59032,'2010011')

in base a questi dati nella colonna data devo inserire: 01-01-2010 e 16-01-2010. Questi valori vengono presi in base al fatto che il valore "tiponotifica" è formato da: anno=2010 mese=01 e il valore "0" o "1". Se questo valore è 0 significa che il giorno deve essere "01" se invece il valore è 1 il giorno deve essere "16"...Non ditemi il perchè in quanto questa logica è stata adottata dai programmatori del programma in base a determinate esigenze del cliente..
Io devo solo fare questo aggiornamento.

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

micto27 Profilo | Senior Member

>CREATE PROCEDURE [dbo].[Notifica_new]
>(
>@CodAlbergo Int,
>@Codcomune Int,
>@tiponotifica Varchar(7)
>)
>AS
>BEGIN
>INSERT INTO dbo.notifiche
>(CodAlbergo,codcomune,tiponotifica)
>VALUES
>(@CodAlbergo,@codcomune,@tiponotifica)
>END

Ciao,
puoi anche semplicemente modificare così la INSERT

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

praticamente si ricava la data del primo del mese, sommando poi 15 moltiplicato o per ZERO (in questo caso rimane il primo del mese) o per UNO
e in questo modo si ottiene il 16 del mese.

Michele

trinity Profilo | Guru

Se scrivo la sintassi che mi hai postato mi da il seguente errore:

Sintassi non corretta in prossimità di '+'.

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

micto27 Profilo | Senior Member

Ciao,
scusami ma nel copia/incolla mi sono trascinato una parentesi in più...
prova così, eventualmente ci risentiamo.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Michele

trinity Profilo | Guru

Grazie mille funziona

Ciao
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5