2015-10-27 13 views
16

Sto cercando di salvare una data dal mio ui-Datepicker angolare nel mio database SQL.La data è nel formato (10-27-2015 12:00 AM), ma non salverà ho provato ad utilizzare il seguente per convertirlo in formato DateTime SQL:.Nessun sovraccarico per il metodo "ToString" richiede 1 argomento per la data di trasmissione

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

ma ho visualizzato l'errore "Nessun sovraccarico per il metodo 'ToString' prende 1 argomenti. Il campo in SQL è di tipo "datetime".

Qualsiasi assistenza è molto apprezzata.

+0

Come la vostra risposta, dice, 'myDate' non è un 'DateTime', è un' Nullable ', quindi quando si chiama' ToString' lo si chiama sul tipo 'Nullable ', non 'DateTime'. –

risposta

46

che si desidera utilizzare DateTime.ToString(format) non Nullable<DateTime>.ToString(no overload):

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

Naturalmente questo non gestisce il caso che non v'è alcun valore. Forse qualcosa di simile:

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

myDate.Value.HasValue restituirà un errore. Dovrebbe essere myDate.HasValue? startDate.Value.ToString ("aaaa-MM-gg HH: mm: ss") –

+0

@Ebenezar: ovviamente, grazie :) –

+0

Se puoi vivere con un po 'di boxe dietro le quinte e se vuoi la stringa vuota in case 'myDate' è nullo, c'è una sintassi breve possibile con' string sqlFormattedDate = $ "{myDate: yyyy-MM-dd HH: mm: ss}"; '. Richiede C# 6 (stringhe interpolate). Funziona internamente inscatolando il 'DateTime' spostato a un riferimento' object'. Se diventa un riferimento null, viene utilizzata la stringa vuota. In caso contrario, viene confermato che il tipo di esecuzione della casella implementa 'IFormattable', e viene utilizzato il sovraccarico' ToString' relativo da tale interfaccia. –

0

Funzionerà correttamente.

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"); 

Anche se è possibile utilizzare codice lato server in .cshtml e gestire questo casting, come di seguito (per esempio):

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