简体   繁体   中英

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;
}

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.

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

Are you using a stored procedure?

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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM