我正在使用ASP的DateDiff()函数来查找两个日期之间的日期差异。
该函数运行良好,并显示两个日期之间的确切日期差异,但是当在数据库中插入此值时,它将9作为值,而不考虑任何日期差异。
假设两个日期之间的差异超过15天或20天,则在数据库中需要"9“。
我使用INT作为显示日期差异的列的数据类型。
数据类型在这里造成了问题吗?我甚至尝试过使用会话变量来存储值,但是没有成功--下面是我的代码:
if request.Form("sub") <> "" then
sql = "Select * from emp_leave_details"
rs.open sql , con, 1, 2
dim diff
dim todate
dim fromdate
fromdate= rs("leave_from")
todate= rs("leave_to")
session("date_diff")=datediff("d",fromdate,todate)
rs.addnew
rs("emp_name") = request.Form("name")
rs("emp_no") = request.Form("number")
rs("address") = request.Form("address")
rs("contact_no") = request.Form("contact")
rs("mobile_no") = request.Form("mobile")
rs("contact_onleave") = request.Form("contact_details")
rs("leave_type") = request.Form("rad")
rs("other_leave_details") = request.Form("PS")
rs("leave_from") = request.Form("from")
rs("leave_to") = request.Form("to")
rs("applied_by") = request.Form("apply")
rs("accepted_by") = request.Form("accept")
rs("approved_by") = request.Form("approve")
rs("no_of_leave_taken")= session("date_diff")
rs.update
response.Write("<script language='javascript'>{update();}</script>")
rs.close
end if发布于 2012-05-09 18:59:23
数据类型与此无关。将值存储在会话中不是解决方案。您可以使用常规变量。
从您的代码看,您似乎总是对fromdate和todate使用相同的值。这是因为您不会迭代结果集中的行。
if not rs.bof and not rs.eof then
do while not rs.eof
'' code to execute for each row
rs.moveNext
loop
end if在当前脚本中,rs将始终返回查询返回的第一行的结果。
您遇到的第二个问题可能是Date数据类型。使用cDate将您的值转换为日期,并使用它来计算差值。
发布于 2012-05-10 07:08:20
您的问题是,您搜索"Select * from emp_leave_details“,它总是给出该表中的所有记录。您检索第一条记录的值,并对这些值进行比较,结果总是相同的值,这是正常的。从你的问题可以看出你真正想做的是什么。我想是这样的,所以选择一条这样的记录
Select * from emp_leave_details where emp_name=<%=request.Form("name")%>并在此基础上添加具有计算出的no_of_leave_taken的新记录。
发布于 2012-05-10 13:19:32
对不起伙计们我的错..。这是我调用的数据库字段名,而不是
fromdate= request.form("from")
todate= request.form("to")我把这个叫做
fromdate= request.form("leave_from")
todate= request.form("leave_to")对不起,again..but,我真的很感谢你们为我提供了所有可能的解决方案。
谢谢。
https://stackoverflow.com/questions/10513640
复制相似问题