Convertire un oggetto DateTime C# in un campo SQL
Tags:
Il post seguente fa parte del progetto SQLStringBuilder. Per le ultime versioni del codice sorgente si consiglia di prelevare il codice dal CVS.
Per costruire una stringa SQL in cui dobbiamo inserire un campo di tipo data, la soluzione più ovvia sembra quella di prendere l’oggetto DateTime in cui è contenuta la data e convertirlo in stringa, dopodichè aggiungere questo valore alla condizione della stringa della query SQL:
DateTime date = DateTime.Now; string sql = "INSERT INTO tableWithDate VALUES(1, "+ date.ToString() + ")";
Purtroppo DateTime.ToString() ci ritorna una stringa del tipo 23/02/2007 19.00.49, mentre il MySQL vuole passata una stringa del tipo 2007-02-23 19:00:49, quindi il pezzo di codice precedente, se eseguito, ci restituirebbe un bell’errore MySQL.
Il semplicissimo metodo statico qui di seguito permette di convertire un oggetto DateTime in stringa in modo da essere accettato dal MySQL:
public static string GetSQLDate(DateTime date)
{
string sql;
sql = date.Year.ToString() + "-" + date.Month.ToString() + "-" + date.Day.ToString() + " "
+ date.Hour.ToString() + ":" + date.Minute.ToString() + ":" + date.Second.ToString();
return sql;
}
Io ho inserito il metodo all’interno di una classe di utilità, che ho chiamato per l’appunto Utils, quindi la query iniziale diventerà:
string sql = "INSERT INTO tableWithDate VALUES(1, "+ Utils.GetSQLDate(date) + ")";
Se sei interessato a questo post, potresti anche provare a leggere:
-
No related posts
23 Feb 2007 dzamir
Ciao, senti ma, hai studiato al cepu ?
si infatti, un bel replace??
Invece di fare commenti idioti perchè voi menti superiori non proponete delle idee. Quello che c’è scritto non è affatto privo di logica anzi affronta un problema e fornisce una soluzione semplice che forse vi è sfuggita.
O forse avete soluzioni più brillanti?
Ovviamente nel caso dell’utlima risposta attendiamo una vostra illuminazione.
P.s. per Simone in replace non serve a nulla occorre anche invertire anno, mese e giorno (nel caso non te ne fossi accorto).
UsandoGrazie per la difesa

UsandoNon mi andava neanche di rispondere… certo il metodo per convertire non è dei più eleganti ma almeno è efficace