紧急提问: 有关sqlserver中date 与asp.net中date的辨析!

redolive 2003-05-31 09:57:18
asp.net + sqlserver 2000
在注册页面中提取用户生日信息
dim year,month ,day as string
dim userbirthday as date

userbirthday = cdate(year + "-" + month + "-" +day)
但将userbirthday 加入数据库中后,取出发现该时间信息不是产生的userbirthday
而是随机的date!

比如 userbirthday = cdate("1999-9-22")
取出则变成 1903-5-3 0:0:0
为什么?
难道是sqlserver中的date与asp.net的date有差异?
...全文
78 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
redolive 2003-05-31
  • 打赏
  • 举报
回复
hhzh426,谢谢,谢谢.正是这个地方出错了.
还有各位热心的弟兄们.谢谢.
马上结帖.
xrll 2003-05-31
  • 打赏
  • 举报
回复
<body >
<form runat="server" action="AddSaleContract.aspx" name="upt" method="post" enctype="multipart/form-data">
<table width="100%" border="1" bordercolor="#CCCCFF" cellspacing="1" cellpadding="1" align="center">
<th bgcolor="Maroon" Colspan="4">合同信息添加</th>
</tr>
<tr>
<td align="left" width="20%" valign="top">
客    户:</td><td colspan="3"><asp:Dropdownlist id="Customer_list" DataTextField="CompanyName" DataValueField="Customerid" Width="40%" AutoPostBack="true" runat="server"/>  <input type="submit" name="Customer_Add" OnServerClick="AddCustomer" Value="增加新客户" CausesValidation="false" runat="server"/>
</td></tr>
<tr><td>
合同名称:</td><td colspan="3"> <asp:TextBox id="ContractName" size="40%" BorderWidth="1" runat="server"/>
<asp:RequiredFieldValidator id="ContractNameVal"
ControlToValidate="ContractName"
Display="Static"
Font-Name="Verdana" Font-Size="8"
runat=server>
 合同名称不能为空!
</asp:RequiredFieldValidator>

</td></tr><tr><td>合同标题:</td><td colspan="3"><asp:TextBox id="ContractTitle" size="40%" BorderWidth="1" runat="server"/>
<asp:RequiredFieldValidator id="ContractTitleVal"
ControlToValidate="ContractTitle"
Display="Static"
Font-Name="Verdana" Font-Size="8"
runat=server>
 合同标题不能为空!
</asp:RequiredFieldValidator>
</td>
</tr>
<tr><td>
合同编号:</td><td colspan="3"><asp:TextBox id="ContractNumber" size="40%" BorderWidth="1" runat="server"/>
<asp:RequiredFieldValidator id="ContractNumberVal"
ControlToValidate="ContractNumber"
Display="Static"
Font-Name="Verdana" Font-Size="8"
runat=server>
 合同编号不能为空!
</asp:RequiredFieldValidator>

</td></tr><tr><td>
合同价值:</td><td colspan="3"><asp:TextBox id="ContractPrice" size="40%" BorderWidth="1" runat="server"/>
<asp:RegularExpressionValidator id="ContractPriceVal"
ControlToValidate="ContractPrice"
ValidationExpression="^\d*"
Display="Dynamic"
Font-Name="Verdana" Font-Size="8"
runat=server>
 必须输入有效数字!
</asp:RegularExpressionValidator >
</td>
</tr><tr>
<td>
合同附件: </td><td colspan="3"><input type="file" id="AttachmentName" size="30" border="1" runat="server"/>
</td>
</tr><tr><td>
主要内容:</td><td colspan="3"><asp:TextBox id="Description" BorderWidth="1" Columns="65" Rows="5" TextMode="MultiLine" runat="server"></asp:TextBox><br>
</td></tr>
<tr><td colspan="2" width="45%">签订日期:
<ASP:Calendar id="OrderDate"
BorderWidth="2"
BorderColor="lightblue"
BackColor="#FFFFFF"
Font-Size="8pt"
TitleStyle-Font-Size="8pt"
TitleStyle-BackColor="#cceecc"
DayHeaderStyle-BackColor="#ddffdd"
DayHeaderStyle-Font-Size="10pt"
WeekendDayStyle-BackColor="#ffffcc"
SelectedDate="7/1/2003"
VisibleDate="5/1/2003"
SelectedDayStyle-BackColor="lightblue"
runat="server"/>
</td>
<td colspan="2" width="55%">交付日期:
<ASP:Calendar id="RequiredDate"
BorderWidth="2"
BorderColor="lightblue"
BackColor="#FFFFFF"
Font-Size="8pt"
TitleStyle-Font-Size="8pt"
TitleStyle-BackColor="#cceecc"
DayHeaderStyle-BackColor="#ddffdd"
DayHeaderStyle-Font-Size="10pt"
WeekendDayStyle-BackColor="#ffffcc"
SelectedDate="7/25/2003"
VisibleDate="5/25/2003"
SelectedDayStyle-BackColor="lightblue"
runat="server"/>
</td></tr>
<tr><td>
合同形式:</td><td colspan="3"><asp:Dropdownlist id="ContractFormCategories_list" DataTextField="FormName" DataValueField="FormID" Width="40%" AutoPostBack="true" runat="server"/>
</td>
</tr>
<tr><td>
合同状态:</td><td colspan="3"><asp:radiobuttonlist ID="Result" RepeatColumns="3" Visible="true" runat="server">
<asp:ListItem Text="待执行" Value="1"></asp:ListItem>
<asp:ListItem Text="执行中" Value="0"></asp:ListItem>
<asp:ListItem Text="已完毕" Value="-1"></asp:ListItem>
</asp:radiobuttonlist> </td>
</tr>
</table>
<center>
<input type="submit" OnServerClick="Submit_Click" Value="保存" runat="server"/>
<input type="submit" OnServerClick="reset_Click" Value="取消" CausesValidation="false" runat="server"/>
<p align="center"><asp:Label id="Label1" runat="server"/>
</center>
</form>
</body>
</html>
xrll 2003-05-31
  • 打赏
  • 举报
回复
这是我添加合同信息的代码,其中日期是用日历控件,你可以参考一下,基本可以满足你需要的功能:
<%@Page language="C#" Debug="True"%>
<%@Import Namespace="System.IO"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<html>
<head>
<title>信息添加页面</title>
<style type="text/css">
<!--
BODY {
SCROLLBAR-FACE-COLOR: #cccc99; SCROLLBAR-SHADOW-COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #000000; SCROLLBAR-ARROW-COLOR: #000000; SCROLLBAR-TRACK-COLOR: #e7e6cb; SCROLLBAR-DARKSHADOW-COLOR: #ffffff
}
table { font-size: 10pt;}
body { font-size: 10pt;}
TH{
color: #FFFFFF;
background-color: Maroon;
align:center;
height:25px;
valign:middle;
}
A:LINK { color: #FFFFFF;
text-decoration: none;
}
A{
color: #FFFFFF;
text-decoration: none;
}
A:VISITED{
color:#FFFFFF;
text-decoration: none;
}
A:HOVER{
color: #CCCCCC;
text-decoration: none;
}
A:ACTIVE{
text-decoration: underline;
}
-->
</style>
<Script Language="C#" runat="server">
SqlConnection MyConnection;
void Page_Load(Object Src,EventArgs E){
MyConnection =new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
if (!IsPostBack){
Result.SelectedIndex = 0;
SqlDataAdapter myCommand = new SqlDataAdapter("SELECT CustomerID,CompanyName FROM Customers", MyConnection);
SqlDataAdapter myCommand0 = new SqlDataAdapter("SELECT FormID,FormName FROM ContractFormCategories", MyConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Customers");
myCommand0.Fill(ds, "ContractFormCategories");
Customer_list.DataSource = ds.Tables["Customers"].DefaultView;
Customer_list.Visible=true;
Customer_list.DataBind();
ContractFormCategories_list.DataSource = ds.Tables["ContractFormCategories"].DefaultView;
ContractFormCategories_list.Visible=true;
ContractFormCategories_list.DataBind();
}
}
void Submit_Click(Object sender,EventArgs E) {
String insertCmd = "Insert into SaleContractDetails (ContractName, ContractTitle, ContractNumber, Description, CustomerID, AttachmentName, ContractPrice, Otime, OrderDate, RequiredDate, FormCategoryID, ProfessionalID, ContractCategoryID, Result) values (@ContractName, @ContractTitle, @ContractNumber, @Description, @CustomerID, @AttachmentName, @ContractPrice, @Otime, @OrderDate, @RequiredDate, @FormCategoryID, @ProfessionalID, @ContractCategoryID, @Result)";
SqlCommand MyCommand = new SqlCommand(insertCmd,MyConnection);
DateTime now= DateTime.Now;
string filename0;
string filename;
if (AttachmentName.Value!= null)
{
filename0=AttachmentName.PostedFile.FileName;
filename=Path.GetFileName(filename0);
try {
AttachmentName.PostedFile.SaveAs(Server.MapPath("ConstructionContract\\Attachment\\"+filename));
}
catch (Exception exc) {
Label1.Text = "保存文件时出错<b>" +filename+ "</b><br>"+ exc.ToString();
}
MyCommand.Parameters.Add(new SqlParameter("@ContractName", SqlDbType.NVarChar, 50));
MyCommand.Parameters["@ContractName"].Value = ContractName.Text;
MyCommand.Parameters.Add(new SqlParameter("@ContractTitle",SqlDbType.NVarChar, 50));
MyCommand.Parameters["@ContractTitle"].Value = ContractTitle.Text;
MyCommand.Parameters.Add(new SqlParameter("@CustomerID", SqlDbType.Int, 4));
MyCommand.Parameters["@CustomerID"].Value = Customer_list.SelectedItem.Value;
MyCommand.Parameters.Add(new SqlParameter("@AttachmentName",SqlDbType.NVarChar, 50));
MyCommand.Parameters["@AttachmentName"].Value =filename;
MyCommand.Parameters.Add(new SqlParameter("@Description",SqlDbType.NVarChar, 1500));
MyCommand.Parameters["@Description"].Value = Description.Text;
MyCommand.Parameters.Add(new SqlParameter("@otime",SqlDbType.DateTime, 8));
MyCommand.Parameters["@otime"].Value = now.ToString();
MyCommand.Parameters.Add(new SqlParameter("@ContractNumber",SqlDbType.NVarChar, 50));
MyCommand.Parameters["@ContractNumber"].Value = ContractNumber.Text;
MyCommand.Parameters.Add(new SqlParameter("@ContractPrice",SqlDbType.Float, 8));
MyCommand.Parameters["@ContractPrice"].Value = ContractPrice.Text;
MyCommand.Parameters.Add(new SqlParameter("@OrderDate",SqlDbType.DateTime, 8));
MyCommand.Parameters["@OrderDate"].Value = OrderDate.SelectedDate;
MyCommand.Parameters.Add(new SqlParameter("@RequiredDate",SqlDbType.DateTime, 8));
MyCommand.Parameters["@RequiredDate"].Value = RequiredDate.SelectedDate;
MyCommand.Parameters.Add(new SqlParameter("@FormCategoryID",SqlDbType.Int, 4));
MyCommand.Parameters["@FormCategoryID"].Value = ContractFormCategories_list.SelectedItem.Value;
MyCommand.Parameters.Add(new SqlParameter("@ProfessionalID",SqlDbType.Int, 4));
MyCommand.Parameters["@ProfessionalID"].Value = Int32.Parse(Request.Params["ProfessionalID"]);
MyCommand.Parameters.Add(new SqlParameter("@ContractCategoryID",SqlDbType.Int, 4));
MyCommand.Parameters["@ContractCategoryID"].Value = Int32.Parse(Request.Params["ContractCategoryID"]);
MyCommand.Parameters.Add(new SqlParameter("@Result",SqlDbType.Int, 4));
MyCommand.Parameters["@Result"].Value = Result.SelectedItem.Value;
MyCommand.Connection.Open();
try
{
MyCommand.ExecuteNonQuery();
Label1.Text="信息增加成功!";
}
catch (SqlException exc)
{
if (exc.Number == 2627)
Label1.Text = "错误: 相同主键的记录已经存在!";
else
Label1.Text = "错误:未能添加记录,请确保正确填写了字段!";
Label1.Style["color"] = "red";
}
MyCommand.Connection.Close();
Response.Write("<script>opener.location.href=opener.location.href;opener=null;window.close();</"+"script>");
}
}
void reset_Click(Object sender,EventArgs e)
{
ContractName.Text="";
ContractTitle.Text="";
Description.Text="";
ContractNumber.Text="";
ContractPrice.Text="";
Label1.Text= "";
}
public void AddCustomer(Object Sender,EventArgs E){
if ((Request.Params["ProfessionalID"]!= null)&(Request.Params["ContractCategoryID"]!= null))
{
int ProfessionalID = Int32.Parse(Request.Params["ProfessionalID"]);
int ContractCategoryID = Int32.Parse(Request.Params["ContractCategoryID"]);
Response.Redirect("AddCustomers.aspx?ProfessionalID="+ProfessionalID+"&ContractCategoryID="+ContractCategoryID);
}
}
</Script>
</head>
hhzh426 2003-05-31
  • 打赏
  • 举报
回复
你输出你的sql语句看看,是什么样子的。
redolive 2003-05-31
  • 打赏
  • 举报
回复
to: hhzh426
在sqlServer 下
update users set u_birthday='1999-9-9' where userId="sss"
可以顺利更新数据库,
但在线更新就是不好使.
我甚至将userbirthday作string输入,企图让数据库自己转换,如上,但还是加入的随机时间,
1903-5-1 0:0:0 之类.

hhzh426 2003-05-31
  • 打赏
  • 举报
回复
strSQL="insert into users(u_id, u_nickname, u_password,u_question,u_answer,u_name,u_sex,u_birthday,u_level)"
strSQL += "values('" + userId + "','" + userNickName +"','"
strSQL += userPwd1 +"','"+ userQuestion +"','"+ userAnswer +"','"+ username+"','" + usersex +"',"
strSQL += "'"+year +"-" + month +"-" +day+ "',1)"

sql字符串中,生日字段与字符串字段的书写方式是一样的,即必须用'将生日字符串包围起来。

你的最终sql字符串应该象这样:
insert into users (uid,unickname,upassword,u_question,u_answer,u_name,u_sex,u_birthday,u_level)
values('xxx','xxx','xxx','xxx','xxx','xxx','x','1999-9-22',1)
其中uid,unickname,upassword,u_question,u_answer,u_name,u_sex是字符型
u_birthday为datetime
u_level为整型。
redolive 2003-05-31
  • 打赏
  • 举报
回复
to xrll:
是,vb中支持+ 和& 操作,我习惯用+.
sql中是datetime格式.

xrll 2003-05-31
  • 打赏
  • 举报
回复
vb中的+号是这样使用的吗?这好象c#的格式。你在数据库中设置生日是DateTime格式吗?
hhzh426 2003-05-31
  • 打赏
  • 举报
回复
应该没有差异的。
你试试
update 数据表
set 生日='1999-9-22'看看是不是能够正确保存。

userbirthday = Datetime.Parse("1999-9-22");
redolive 2003-05-31
  • 打赏
  • 举报
回复
Dim userName ,userSex,year,month,day ,userTel,userAddress,userEmail as string
dim userbirthday as date
userName = trim(textboxname.text)
if rbman.checked then
usersex ="m"
elseif rbfemale.checked then
userSex = "f"
else usersex =""
end if ' if rbman.checked

' 对生日的选择
year = trim(textboxYear.text)
month = trim(ddlMonth.selectedItem.text)
day = trim(ddlDay.selectedItem.text)
'userBirthday = cdate(month +"/" + day + "/" + year)
' userbirthday = cdate(year +"-" + month +"-" +day).tostring
//以上都不可

userbirthday = cdate(year +"-" + month +"-" +day)

'response.write(userbirthday)
'response.write(year +"-" + month +"-" +day)

userTel = trim(textboxTelphone.text)
userAddress = trim(textboxAddress.text)
userEmail = trim(textboxEmail.text)

Dim strSQL as String
strSQL="insert into users(u_id, u_nickname, u_password,u_question,u_answer,u_name,u_sex,u_birthday,u_level)"
strSQL += "values('" + userId + "','" + userNickName +"','"
strSQL += userPwd1 +"','"+ userQuestion +"','"+ userAnswer +"','"+ username+"','" + usersex +"',"
strSQL += userbirthday + ",1)"


只贴出了相应的代码,有字符串转date验证没问题.
我是根据response.write(now())的格式来确定 yy-mm-dd 的字符串匹配.
由response.write(userbirthday)输出的date格式相符,转换应该没问题,
问题在于加入数据库中出错!
redolive 2003-05-31
  • 打赏
  • 举报
回复
to:programmeraaron

试过了,不行!
结果还是一样.
programmeraaron 2003-05-31
  • 打赏
  • 举报
回复
dim userbirthday as date
userbirthday =cdate("1999-9-22").tostring
可不可以??

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧