2010-12-05 7 views
1

Ich erhalte die lastupdated Datum von SQL Server 2008, die den Folgewert „hat 2010-12-01 22: 14:. 49,253'Wartung des Datetime-Format von SQL Server auf C# und zurück zu SQL Server

Dann habe ich Anzeige dies in einer Gridview und wenn die Benutzer überprüfen diese Zeile zu löschen.

ich brauche diesen Wert gegenüber dem lastupdated Datum in SQL Server zu überprüfen, vor dem Speichern.

Das Problem ist, wenn ich diese konvertieren zu datetime es entfernt die Stunden, Minuten und Sek.

Also wenn ich es vergleiche scheitert.

Kann mir jemand sagen, wie ich das Datumsformat beibehalten kann?

SQL Server 2008 - Datentyp wird datetime

C# verwendet

DateTime dt = DateTime(dr["LastUpdateDateTime"]); 
object.lastdatetime = dt; 

das Objekt mit einem Datenraster bindet

<asp:BoundField DataField="LastUpdateDateTime" ItemStyle-CssClass="hidcolumn"> 

die Daten vom Netz abruft gridview1.Rows Verwendung

{ 
    gc.LastUpdateDateTime = Convert.ToDateTime(row.Cells[9].Text); 
} 

und leitet sie an den Datalayer

new SqlParameter("@lastUpdateDate", lastUpdateDate); 

die gespeicherte Prozedur

Ich denke, ruft, wenn auf die Gridview verbindlich wird, wenn die Zeitinformation verloren zu werden.

+1

Wie konvertieren Sie die Datetime? Wo verliert es die Präzision? Können Sie den Code posten? – Oded

+0

object.LastUpdateDateTime = (DateTime) (dr ["lastupdatedatetime"]); – dotnetrocks

+1

Ist hier die Präzision verloren? Enthält 'LastUpdateDateTime' nicht die Zeit? – Oded

Antwort

1

Erste Frage: beim Debuggen, was ist der Wert/Datentyp Ihrer dt hier ?? Enthält dies noch das vollständige Datum einschließlich der Uhrzeit?

DateTime dt = DateTime(dr["LastUpdateDateTime"]); 
object.lastdatetime = dt; 

Zweite Frage: Geben Sie eine DataFormatString in Ihrem <asp:BoundField> ?? Schauen Sie sich die MSDN Docs on DataFormatString zu sehen, was Sie dort einstellen können - vielleicht sind Sie hier den Zeitanteil Kürzen aus (durch nicht spezifiziert etwas) .....

Dritte Frage: wenn Sie durch debuggen, was zu tun Sie sehen in row.Cells[9].Text hier, und was ist der Wert von gc.LastUpdateDateTime nach diesem konvertieren? Enthält das noch Stunden, Minuten, Sekunden?

{ 
    gc.LastUpdateDateTime = Convert.ToDateTime(row.Cells[9].Text); 
} 

Vierte Frage/Empfehlung: wenn SqlParameter mit, ich immer den Datentyp angeben. .NET ist ziemlich gut im Raten - aber es ist nur das - Raten - warum nicht es sagen was die Daten sind ??

SqlParameter param = new SqlParameter("@lastUpdateDate", SqlDbType.DataTime); 
param.Value = lastUpdateDate; 
+0

Es war ein Tippfehler. Danke, dass du mich darauf hingewiesen hast. – dotnetrocks