2015-10-27 7 views
16

Ich versuche ein Datum von meinem Angular ui-Datepicker in meine SQL-Datenbank zu speichern Das Datum ist im Format (27.10.2015 12:00 AM), aber es wird nicht retten ich habe versucht, die folgenden wandeln es in SQL Datetime-Format.Keine Überladung für die Methode 'ToString' benötigt 1 Argumente beim Casting Datum

DateTime? myDate = form.dteStartDate; 
    string sqlFormattedDate = myDate.ToString("yyyy-MM-dd HH:mm:ss"); 

aber ich den Fehler „keine Überladung für Methode‚ToString‘erhalten dauert 1 Argumente. Das Feld in SQL hat den Typ 'datetime'.

Jede Hilfe wird sehr geschätzt.

+0

Als Antwort sagt, 'myDate' ist keine 'DateTime', es ist ein' Nullable ', also, wenn Sie' ToString' nennen, nennen Sie es auf dem 'Nullable ' Typ, nicht 'DateTime'. –

Antwort

46

Sie verwenden möchten DateTime.ToString(format) nicht Nullable<DateTime>.ToString(no overload):

DateTime? myDate = form.dteStartDate; 
string sqlFormattedDate = myDate.Value.ToString("yyyy-MM-dd HH:mm:ss"); 

Natürlich ist dies nicht der Fall umgehen kann, dass es keinen Wert. Vielleicht etwas wie das:

string sqlFormattedDate = myDate.HasValue 
    ? myDate.Value.ToString("yyyy-MM-dd HH:mm:ss") 
    : "<not available>"; 
+0

myDate.Value.HasValue wird Fehler zurückgeben. Es sollte myDate.HasValue sein? startDate.Value.ToString ("JJJJ-MM-TT HH: mm: ss") –

+0

@Ebenezar: natürlich, danke :) –

+0

Wenn Sie mit einem kleinen Boxen hinter den Kulissen leben können, und wenn Sie die leere Zeichenfolge in case 'myDate' ist null, es gibt eine kurze Syntax mit' string sqlFormattedDate = $ "{myDate: yyyy-MM-dd HH: mm: ss}";. Erfordert C# 6 (interpolierte Strings). Funktioniert intern, indem die umschlossene 'DateTime' in eine' Objekt'-Referenz eingebettet wird. Wenn dies eine Nullreferenz wird, wird die leere Zeichenfolge verwendet. Andernfalls wird bestätigt, dass der Laufzeittyp der Box "IFormattable" implementiert, und die relevante "ToString" -Überladung von dieser Schnittstelle wird verwendet. –

0

Es wird gut funktionieren.

DateTime? strDate = form.dteStartDate; 
strDate.Value.ToString("yyyy-MM-dd HH:mm tt"); 
3
string sqlFormattedDate = ((DateTime)myDate).ToString("yyyy-MM-dd HH:mm:ss"); 

Auch wenn Sie serverseitigen Code in .cshtml und diesen Unterguss wie unten (zum Beispiel) verwenden können:

<label>Establish: @(((DateTime)Model.EstablishDate).ToString("yyyy-MM-dd"))</label> 
Verwandte Themen