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