2013-05-19 13 views
8

Ho una colonna con il tipo date nel mio database SQL. Come posso convertirlo in C# DateTime e poi di nuovo in uno SQL date?Come convertire una data SQL in un DateTime?

+6

come stai recuperando i record ? –

+1

Voglio usare qualcosa come 'Seleziona * da News dove add_date <@selected_date' E io uso SqlDataReader – petros

risposta

7

C# Per ottenere data dal lettore

DateTime date1; 
DateTime.TryParse(reader["datecolumn"], out date1); 

Per inserire la data

string date1="2013-12-12"; 
DateTime date2; 
DateTime.TryParse(reader["datecolumn"],out date2); 

SqlCommand cmd= new SqlCommand("Insert into table (dateColumn) Values(@date2)",connection); 
cmd.Parameters.AddWithValue("@date2",date2.Date); 

TryParse restituisce true sul successo fusione false altrimenti.

VB

Per ottenere data dal lettore

Dim date1 as Date=CType(reader("dateColumn"),Date) 

Per inserire la data

Dim date1 as String="2013-12-12" 'you can get this date from an html input of type date 

Dim cmd As New SqlCommand("Insert into table (dateColumn) Values(@date1)",connection) 
cmd.Parameters.AddWithValue("@date1",CType(date1, Date)) 

NOTA: Il codice è scritto in VB. Puoi facilmente scrivere l'equivalente C# del codice precedente. Il nome della funzione rimane lo stesso sia in VB che in C#. Inoltre CType non è disponibile in C# (anche se la sua lo stesso come esplicitamente lanciare un esempio variabile. date1=(DateTime)reader("dateColumn"); mi consiglia di utilizzare TryParse che non genera alcuna eccezione sulla unsuccesful analizza/casting.

Sintassi

Date.TryParse(reader("dateColumn"), date1) 
+2

@newStackExchangeInstance Hai persino letto la mia risposta prima di votarla? Sai anche cosa sono VB e C# e come ci sia praticamente una piccola differenza tra loro? – thunderbird

+1

@thunderbird Le mele Macintosh non sono mele Granny Smith, sebbene siano entrambe mele. Se ne volevi uno e ne ricevevi un altro potresti essere infastidito o almeno confuso/sorpreso. – Yuck

+0

@Yuck ho dato istruzioni su come convertirlo in C#. Oltre a VB e C# è come la codifica in Java e C++. Se ne conosci uno, hai l'altro. Lo tradurrò comunque in C#. – thunderbird

9

uno sql DATE può essere colato direttamente ad una Netto DateTime e viceversa.

per ottenere, utilizzare il SqlDataReader.GetDatetime Method

DateTime myDate = myDataReader.GetDateTime(myColumnIndex); 

per impostare, è sufficiente assegnare al valore della SqlParameter e utilizzare la proprietà .Date del DateTime

+1

Thx. Sono confuso quando msdn dice "Nessuna conversione viene eseguita, quindi i dati recuperati devono già essere un oggetto DateTime." –

1
string mydate= Convert.ToDateTime(reader["dateColumn"]).ToShortDateString().ToString()); 

questi codice sta lavorando per me.Try questi uno

Problemi correlati