Newsgroup: it.comp.lang.visual-basic
Titolo: SQL Server, formattare il campo data

Salve!!!
Ho la tabella TBAzioni, nella quale vado ad inserire il tipo di azione
fatta sui record(aggiunta, modifica, eliminazione), la data della
modifica(che è sempre quella corrente e quindi la prendo con getdate()), e
l'utente che ha effettuato l'azione. 
Ho la necessità di creare una vista che mi conti il numero di volte che è
stata fatta una certa azione, ad esempio quante volte è stata fatta una
modifica. 
Ora devo anche filtrare i record in base alla data, che sarà compresa da
due valori che decide l'amministratore.
Non so se per fare questo filro mi conviene utilizzare una StoredProcedure
che va a prendere i dati dalla Vista filtrando la stessa in base
all'intervallo prescelto, o utilizzare qualche altro sistema... che però
ora mi sfugge...
Cmq, per tirarmi fuori questi conteggi, come ho già detto ho bisogno di
inserire anche il campo Data (in tabella è smalldatetime), che però ha il
formato "DD/MM/YYYY HH:MM:SS" e non mi consente di raggruppare i record
correttamente. 
Vorrei formattare la Data come si fa in Access col
format(...,"DD/MM/YYYY") e ho trovato in SQL Server la funzione COVERT;
tra di voi c'è qualcuno che gentilmente mi spiega come funziona?
Grazie a Tutti!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 funziona?
E perchè invece non usi il formato standard YYYYMMDD (senza nessun convert
in Sql Server)?
Ciao
Alberto

 in Sql Server)?
Ciao Albe V°!
Come gli imposto YYYYMMDD nella vista?


 Come gli imposto YYYYMMDD nella vista?
Un attimo...
Tu parli del filtro, giusto?
Quindi avrai una cosa, che so, tipo:
Campo_Data='20030131'
oppure
Campo_Data Between '20030130' AND '20030131'
Hai detto che volevi usare il formato MM/DD/YYYY come in Access, e io ti ho
semplicemente detto di usare il formato YYYYMMDD.
Per il resto rimane tutto uguale a prima.
Se il tuo dubbio è su altre cose, devi postare il codice che usi...
Ciao
Alberto

Dunque, il mio problema non è il filtro, ma è nella vista, (di cui ieri ho
postato il codice e poi ho risolto con l'aiuto di CSSoft).
Adesso devo contare le azioni in base alla data, non riesco a raggrupparle
perchè non ho il formato esatto.
In tabella il campo Data è smalldatetime, io non voglio l'ora ma solo il
formato gg/mm/aaaa. In Access nelle query usavo la funzione Format, ora
non so che usare.
Il codice della vista è il seguente:
SELECT     Azione, COUNT(IDAzione) AS ConteggioAzione
FROM         dbo.TBAzioniEffettuate
WHERE     (Azione LIKE 'Nuovo%') OR
                      (Azione LIKE 'Modifi%') OR
                      (Azione LIKE 'Elim%')
GROUP BY Azione
Ora devo aggiungere il campo Data formattato per poi poterli contare e
raggruppare.
Il filtro invece, dovrei passarlo da una store_procedure che richiama la
vista.
Spero di essere stata chiara!


 Spero di essere stata chiara!
Stavolta abbastanza.
Prima assolutamente non si capiva niente...
Comunque, se vuoi raggruppare per data, puoi tranquillamente crearti un
campo aggiuntivo che ti distingua il giorno, o usando funzioni che
convertono la data in una stringa, o usando le singole funzioni che
estraggono, giorno, mese ed anno, o, ed č la mia preferita, usando il
datediff(day,...), che ti calcoli la differenza (in giorni), fra una data
prefissata (qualunque) e la data del singolo record.
Il valore numerico restituito, usato nel group by, č perfetto per quello che
ti serve.
Ovviamente userai una funzione di aggregazione (tipicamente il Max) per
estrarre una data da ciascun gruppo.
Poi, per passare da codice a Sql-Server una eventuale data di filtraggio (ad
esempio alla stored procedure), userai il formato YYYYMMDD che ti dicevo.
Ciao
Alberto