2015-10-27 14 views
16

Tôi đang cố lưu một ngày từ Angular ui-Datepicker vào cơ sở dữ liệu SQL của tôi. Ngày có định dạng (10-27-2015 12:00 SA) nhưng nó sẽ không được lưu. Tôi đã thử sử dụng các bước sau để chuyển đổi sang định dạng Ngày giờ SQL:Không có quá tải cho phương pháp 'ToString' lấy 1 đối số khi truyền ngày

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

Nhưng tôi nhận được lỗi "Không quá tải cho phương thức 'ToString' lấy 1 đối số. Trường trong SQL là kiểu 'datetime'.

Bất kỳ hỗ trợ nào được đánh giá cao.

+0

Như câu trả lời của bạn nói, 'myDate' không phải là một 'DateTime', một' Nullable ', vì vậy khi bạn gọi' ToString', nó gọi nó là 'Nullable ', không phải 'DateTime'. –

Trả lời

46

Bạn muốn sử dụng DateTime.ToString(format) không Nullable<DateTime>.ToString(no overload):

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

Tất nhiên điều này không xử lý các trường hợp đó không có giá trị. Có lẽ một cái gì đó như thế này:

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

myDate.Value.HasValue sẽ trả về lỗi. Nó phải là myDate.HasValue? startDate.Value.ToString ("yyyy-MM-dd HH: mm: ss") –

+0

@Ebenezar: tất nhiên, cảm ơn :) –

+0

Nếu bạn có thể sống với một chút quyền anh sau hậu trường và nếu bạn muốn chuỗi rỗng trong trường hợp 'myDate' là null, có một cú pháp ngắn có thể với' string sqlFormattedDate = $ "{myDate: yyyy-MM-dd HH: mm: ss}"; '. Yêu cầu C# 6 (chuỗi nội suy). Hoạt động bên trong bằng cách đóng gói 'DateTime' được bao bọc thành một tham chiếu' object'. Nếu điều đó trở thành tham chiếu null, chuỗi rỗng sẽ được sử dụng. Nếu không, nó được xác nhận rằng kiểu thời gian chạy của hộp thực hiện 'IFormattable' và quá tải' ToString' có liên quan từ giao diện đó được sử dụng. –

0

Nó sẽ hoạt động tốt.

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

Ngoài ra nếu bạn có thể sử dụng mã server-side trong .cshtml và quản lý đúc này như sau (ví dụ):

<label>Establish: @(((DateTime)Model.EstablishDate).ToString("yyyy-MM-dd"))</label> 
Các vấn đề liên quan