Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The conversion of a datetime2 data type to a datetime data type Error

I have a controller:

[HttpPost]
public ActionResult Create(Auction auction)
{
    var db = new EbuyDataContext();
    db.Auctions.Add(auction);
    db.SaveChanges();
    return View(auction);
}

A model:

public class Auction
{
        public long Id { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public decimal StartPrice { get; set; }
        public decimal CurrentPrice { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }}
}

And a view:

@model Ebuy.Website.Models.Auction
@using (Html.BeginForm())
{
    <p>
        //All the information fields...
        @Html.LabelFor(model => model.EndTime)
        @Html.EditorFor(model => model.EndTime)
    </p>
}

When I try to run it I receive the error:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

The model-controller-view is from a book copied one-to-one.

What is the format that I need to enter to the EndTime field so I won't have this error?

like image 603
Alexandra Orlov Avatar asked Apr 30 '13 11:04

Alexandra Orlov


1 Answers

The error is because you haven't actually set those values correctly, make sure you set them depending on your applications locale. (e.g. dd/mm/yyyy for en-GB, mm/dd/yyyy for en-US).

It also looks like your database has been set up to use a datetime2 column and not a datetime column.

You can either:

A) Modify the database to change the type from datetime2 to datetime

B) Change the types in your Model to be datetime2, by doing:

[Column(TypeName = "DateTime2")]
public DateTime StartTime { get; set; }

[Column(TypeName = "DateTime2")]
public DateTime EndTime { get; set; }
like image 132
mattytommo Avatar answered Oct 26 '22 03:10

mattytommo