Saad Abbas
Saad Abbas

Reputation: 11

insert date of birth into sql server

I made a JavaScript for date of birth, when debugging you choose your day of birth in three drop down boxes. One for days one for months and one for years. I'm working on C# asp.net. The problem is when i click on test(which is submit or confirm) the date is not taken to the database table. It fills empty! Any help would be appreciated..

here's the code:

DateOfBirth.js:

function date_populate(dayfield, monthfield, yearfield) 
{
    var today = new Date();
    var dayfield = document.getElementById(dayfield);
    var monthfield = document.getElementById(monthfield);
    var yearfield = document.getElementById(yearfield);

    for (var i = 0; i < 32; i++) 
    {
        dayfield.options[i] = new Option(i , i + 1)
        dayfield.options[today.getDate()] = new Option(today.getDate(), today.getDate(), true, true)
    }

    for (var m = 0; m < 12; m++) 
    {
         monthfield.options[m] = new Option(monthtext[m], monthtext[m])
         monthfield.options[today.getMonth()] = new Option(monthtext[today.getMonth()], monthtext[today.getMonth()], true, true)
    }

    var thisyear = today.getFullYear()
    for (var y = 0; y < 100; y++)
    {
        yearfield.options[y] = new Option(thisyear, thisyear)
        thisyear -= 1
    }

    yearfield.options[0] = new Option(today.getFullYear(), today.getFullYear(), true, true)
}

Form.asp.cs

protected void Button1_Click(object sender, EventArgs e)
{
    String D, M, Y, Full;

    D = Day.Value.ToString();
    M = Month.Value.ToString();
    Y = Year.Value.ToString();

    Full = D + "/" + M + "/" + Y;
}

Upvotes: 0

Views: 1678

Answers (3)

patil.rahulk
patil.rahulk

Reputation: 584

Change your SP parameter from SqlDbType.NVarChar to SqlDbType.DateTime and then pass the date as a DateTime object to the parameter. You dont need to worry about conversions anymore.

    DateTime dateofbirth = new DateTime(Convert.ToInt32(yearfield.SelectedValue),Convert.ToInt32(monthfield.SelectedValue), Convert.ToInt32(dayfield.SelectedValue));

    param[0] = new SqlParameter("@DateOfBirth", SqlDbType.DateTime);
    param[0].Value = dateofbirth;

Upvotes: 0

Marc Gravell
Marc Gravell

Reputation: 1063338

Don't construct dates as strings. Pass them as dates. For example:

DateTime dob = new DateTime(Year.Value, Month.Value, Day.Value);
...
cmd.Parameters.AddWithValue("dob", dob);

where the cmd.CommandText involves @dob when you want to refer to the date of birth.

Upvotes: 1

sanepete
sanepete

Reputation: 1128

Format the date 'yyyy-mm-dd' and it will insert.

Are you using a stored procedure?

Upvotes: 0

Related Questions