Ich habe eine bestimmte Situation, die ich nicht ganz herausfinden kann.SQL Server Datum Konvertierung von einem bestimmten Format in ein anderes genaues Datumsformat
Ich habe ein Feld in einer SQL-Tabelle, die als DATETIME- in folgendem Format gespeichert:
2016-11-26 00:00:00
Das ist alles gut und-gut, außer dass ich es in dd/MM/yyyy
Format benötigen.
Ich möchte nicht die CONVERT(VARCHAR(10), @dateField, 103)
-Funktion in SQL verwenden, weil ich ein DATE-Format, nicht ein STRING-Format möchte.
Ich exportiere ein Ergebnis DataTable nach Excel mit der EPPlus-Bibliothek und ich brauche die Datumsfelder im Export in genau diesem Format.
Ich habe versucht:
FORMAT(@dateField, 'dd/MM/yyyy', 'en-gb')
sowie diese wieder in einen Typ DATE Gießen. Es konvertiert noch implizit zu VARCHAR oder NVARCHAR- Casting @ dateField zu DATE und SMALLDATETIME
- Verwenden von C# zu versuchen, dieses Datum in dem richtigen Format zu konvertieren.
DateTime.ParseExact(dataTable.Rows[i]["DateField"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
- EPPlus Spaltenformatierung:
workSheet.Column(19).Style.Numberformat.Format = "dd/MM/yyyy";
Ich bin auf dieser Umwandlung von Optionen ausgeführt wird, weil keiner meiner Versuche für ein Datums- und Uhrzeitformat arbeiten. Jeder Pfad, den ich genommen habe, konvertiert meinen Wert (s) zurück in eine Zeichenkette. Jede Hilfe wäre willkommen :)
Warum rufen Sie 'DateTime.ParseExact' auf? Der Wert sollte bereits eine 'DateTime' sein, also wirf ihn einfach auf diese und * dann * rufe' ToString' auf. Und wenn Sie ein bestimmtes Format haben wollen, * * fragen Sie nach einem String, nicht nach einem DateTime-Wert. –
DateTime hat das Format ** NO **. Es ist ein Binärwert, genau wie .NET DateTime oder Bool oder Dezimal. Sie müssen nichts konvertieren. Verwenden Sie einfach eine parametrisierte Abfrage oder ORM und übergeben Sie die DateTime-Werte als DateTime-Parameter. EPPlus benötigt auch keine speziellen Formate - Daten in Excel verwenden das OADate-Binärformat und EPPlus konvertiert DateTime direkt in dieses Format. Wie Excel ein Datum anzeigt, hängt vom spezifischen Spaltenstil ab, der * verwirrend sein kann * –
@JonSkeet Ich habe versucht, eine regelmäßige Parse sowie eine direkte Besetzung. Die Parse hat das Format nicht geändert, und die direkte Besetzung hat eine InvalidCastException ausgelöst. Wenn Sie den Typ in SQL ändern, wird der Wert in der Kalkulationstabelle auch ohne die Konvertierung als Zahl gespeichert. Ich erwarte 22.03.2011, aber der Zellenwert ist 40624 :( – GrammatonCleric