我为出生日期制作了一个JavaScript,在调试时您可以在三个下拉框中选择出生日期。一天一个月,一个多年。我正在使用C#asp.net。问题是当我点击测试(提交或确认)时,日期不会被带到数据库表。它填空了!任何帮助将不胜感激..
这是代码:
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;
}
答案 0 :(得分:1)
不要将日期构造为字符串。将它们作为日期传递给 。例如:
DateTime dob = new DateTime(Year.Value, Month.Value, Day.Value);
...
cmd.Parameters.AddWithValue("dob", dob);
当您想要参考出生日期时,cmd.CommandText
涉及@dob
。
答案 1 :(得分:0)
格式化日期'yyyy-mm-dd',它将插入。
您使用的是存储过程吗?
答案 2 :(得分:0)
将SP参数从SqlDbType.NVarChar更改为SqlDbType.DateTime,然后将日期作为DateTime对象传递给参数。你不用再担心转换了。
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;