...Personalizza la tua HomePage...

Questa Sezione è Dedicata a Tutti i Webmaster Nofiti e Non

Versione Stampabile Versione PDF Versione .DOC Versione .ZIP Scrivimi i tuoi Commenti

Formattazione e Inserimento Date in Database
Autore :   Linguaggio :  ASP - Active Server Pages
Data :  11/11/2003 12:43:05 Accessi :  25
Quando si trattano dati in formato data, ci si trova spesso di fronte a problemi di formattazione delle date stesse, sia a livello di visualizzazione nel browser che, soprattutto, a livello di corretto inserimento all'interno di un database.

Sia Questo Access o SQL Server.

Nel primo caso, il problema, è spesso dovuto al fatto che il server su cui risiede il nostro sito, ha impostazioni americane, per cui le date, se prelevate dal database e inviate al browser, vengono visualizzate nel formato americano mm/gg/aaaa.

In questa situazione, se si desidera invece una formattazione "italiana", basta aggiungere all'inizio di ogni pagina ASP, la seguente riga di codice:

<%
Session.LCID = 1040
%>

Sarebbe ancora meglio, inserire tale riga nella Sub Session_OnStart del global.asa.

Però alcuni server non permettono di definire la proprietà LCID dell'oggetto Session, per cui, in questo caso, è necessario realizzare una funzione di formattazione.

Vediamola:

<%
'restituisce la data nel formato italiano standard gg/mm/aaaa
Function ItDate(data)
ItDate = Day(data)&"/"&Month(data)&"/"&Year(data)
End Function
%>

Questa funzione accetta come paramentro una data in qualsiasi formato, e restituisce la stessa data in formato italiano standard.

Ed ecco un esempio del suo utilizzo:

<%
Dim data
data = "2002/08/20"
Dim itData
itData = ItDate(data)
Response.Write("Data iniziale: "&data")
Response.Write("...la stessa data in formato italiano standard: "&itData")
%>

Inserimento data in un database.

Il problema dell'inserimento di una data all'interno di un database, spesso tedia un gran numero di programmatori.
Cosa intendo per "Tedia", semplicemente che il database ha una sua interpretazione del formato della data mentre il server ne ha un'altra.
Anzi il problema non è proprio così semplice ma non mi dilungo oltre.

Come database di riferimento, consideriamo MS Access, SQL Server si comporta diversamente.

Supponiamo di avere una stringa sql del tipo:

<%
Dim cn
'apriamo la connessione al database
'Set cn = ....

Dim data
data = Date()
Dim sql
sql = "INSERT INTO iscrizioni(ISCRIZIONE) VALUES(#"&data&"#)"
cn.Execute(sql)
cn.Close()
Set cn = Nothing
%>

In questo frammento di codice, inseriamo la data odierna nel campo ISCRIZIONE della tabella "iscrizioni".

Dopo l'inserimento, se andiamo a controllare cosa effettivamente contiene il database, con molta probabilità, vedremo una data in cui il giorno è stato invertito con il mese (se il giorno è maggiore di 12 la data potrebbe invece essere inserita correttamente).

Per ovviare a questo problema, ed essere sicuri che la data venga sempre inserita nel database nel formato definito durante la creazione del campo della tabella, è sufficiente effettuare gli inserimenti dopo aver convertito la data nel formato aaaa/mm/gg o aaaa-mm-gg.

Ecco la funzione di conversione, e un suo possibile utilizzo, considerando l'esempio appena visto:

<%
'restituisce la data nel formato aaaa/mm/gg per l'inserimento in database
Function FormatDateForDB(data)
FormatDateForDB = Year(data)&"/"&Month(data)&"/"&Day(data)
End Function

Dim cn
'apriamo la connessione al database
'Set cn = ....

Dim data
data = Date()
data = FormatDateForDB(data)
Dim sql
sql = "INSERT INTO iscrizioni(ISCRIZIONE) VALUES(#"&data&"#)"
cn.Execute(sql)
cn.Close()
Set cn = Nothing
%>

Dato che gli inserimenti di date in database, spesso coinvolgono la data relativa al momento stesso dell'inserimento, potrebbe essere comodo generalizzare la funzione appena vista in modo tale che, se il parametro data dovesse essere vuoto, la data restituita sia quella odierna.

Una nota merita anche l'inserimento di date nel caso si utilizzi MS SQL Server come database.

Questo RDBMS accetta le date solo nei formati: aaaammgg oppure aaaa-mm-gg.

Formattazione data e ora del server nel formato Venerdì, 24 maggio 2002 10:04:58 AM.

L'ora dipende dalle impostazioni del server.


<%
myDate=Date()
GiornoSett= WeekdayName (Weekday(myDate))
UpGiornoSett=UCase( Left (GiornoSett,1)) & Mid (GiornoSett,2)
Response.Write ("<b><font size='1' color='Blue' face='Verdana'>")
Response.Write (UpGiornoSett & ", " & Day(myDate) & " " & MonthName (Month ( myDate)) & " " & Year(myDate))
Response.Write ("</font></b>")
Response.Write ("<b><font size='1' color='green' face='Verdana'>")
Response.Write (" <label id='myora'></label>")
Response.Write ("</font></b>")
%>

Ritorna


 NEWS 
12/09/2007 13:08:14
PAURA
Marco Travaglio con Gomez e Crozza ed Elio

11/09/2007 14:44:48
IL V-DAY: un evento NUOVO !!!!!
Aria fresca in Parlamento articolo del Sole24ore: http://www.ilsole24ore.com/art/SoleOnLine4/At...


28/06/2007 14:20:55
LEOPARDI SALUTI i 500
Certo ragazzi, anche noi nel nostro piccolo cresciamo, e Leopardi è il cinquecentesimo saggio nella ...


12/04/2007 11:31:15
ATTENZIONE A CheckMessenger.NET! , è una TRUFFA
Ennesito sito truffaldino: si chiama CheckMessenger e vi promette di mostrarvi se i vostri contatti ...


26/01/2007 11:58:34
AGGIORNATE TUTTE LE SEZIONI
AGGIORNATE TUTTE LE SEZIONI Sì, cari amici. Ho provveduto ad aggiornare le principali sazioni de...


:: ELENCO NEWS ::

  
Valid XHTML 1.0! Valid CSS!