Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving DateTime with WebMatrix and Razor

I am developing a project that has a DateTime field.

In it I'm using jQuery for the user to select the date format 'dd/MM/yyyy' taking into account that the date is not a required field.

How do you do to save DateTime fields not required in WebMatrix and Razor?

I was trying to do something like this:

I put only the code which I think is important to complete the code can be found here

@{
//Get data
string TaskForecastCompletion= Request["txtForecastCompletion"];
string TaskCompletedIn= Request["txtCompletedIn"];

                    DateTime dtForecastCompletion = default(DateTime);
                    if (!Request["txtForecastCompletion"].IsEmpty() && !DateTime.TryParse(Request["txtForecastCompletion"], out dtForecastCompletion))
                    {
                            ModelState.AddError("PrevisaoFinalizacao", "Data de previsão de finalização é inválida. Formato: dd/mm/aaaa");
                    }


                                    sql = @"update Tasks set Title = @0 ,Description = @1 ,ProjectID = @2 ,ForecastCompletion = @3 ,RequestBy = @4 ,CompletedIn = @5 ,Modified = getdate() ,Priority = @6 where ID = @7";
                                    db.Execute(sql, TaskTitle,TaskDescription, ProjectID, dtForecastCompletion, TaskRequestBy, dtTaskCompletedIn, TaskPriority, TaskID);
}

Error trying to change

An overflow occurred while converting to datetime. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlServerCe.SqlCeException: An overflow occurred while converting to datetime.

Source Error:

Line 62: { Line 63:
sql = @"update Tasks set Title = @0 ,Description = @1 ,ProjectID = @2 ,ForecastCompletion = @3 ,RequestBy = @4 ,CompletedIn = @5 ,Modified = getdate() ,Priority = @6 where ID = @7"; Line 64:
db.Execute(sql, TaskTitle,TaskDescription, ProjectID, dtForecastCompletion, TaskRequestBy, dtTaskCompletedIn, TaskPriority, TaskID); Line 65:
} Line 66:

like image 913
ridermansb Avatar asked Feb 28 '11 14:02

ridermansb


1 Answers

If your date field in the database is nullable (not marked as NOT NULL), you can change your datatype in C# to a nullable DateTime:

 DateTime? dtForecastComplete = null;

Now you can pass (and retrieve) a null value to/from the database.

like image 114
GvS Avatar answered Sep 28 '22 01:09

GvS