【发布时间】:2012-05-17 19:46:12
【问题描述】:
我正在使用 ASP 的 DateDiff() 函数来查找两个日期之间的日期差。
该函数可以正常工作并显示两个日期之间的确切日期差异,但是在将这个值插入数据库时,它需要 9 作为值,而不考虑任何日期差异。
假设两个日期之间的差异超过 15 或 20 天,在数据库中需要“9”。
我使用 INT 作为显示日期差异的列的数据类型。
DATA TYPE 是否在这里造成问题? 我什至尝试使用会话变量来存储值,但没有运气 - 下面是我的代码:
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
【问题讨论】:
-
您正在从
SELECT * FROM emp_leave_details选择的第一个记录集中读取fromdate和todate...这真的是有意的吗?看起来你总是使用相同的数据(只要 select * from 是一致的)。 -
@Filburt 谢谢你的回复......我不明白你想说什么......你能详细说明一下......
-
现在如果我把我的查询作为这个' sql = "Select * from emp_leave_details where emp_name='"&session("Username")&"'" '进入数据库的值为 "14" .....无论日期差异如何......是
-
当您进行查询时,您的
leave_date和todate始终取自数据集的第一条记录。fromdate= rs("leave_from")和todate= rs("leave_to")应该改为fromdate= request.form("leave_from")和todate= request.form("leave_to")吗? -
@oracle 认证专业人士,你说得对,它占用了数据集中存在的第一条记录。我交叉检查了它,第一个条目的日期差异为“9”......这就是每次我提交新记录时它显示 9 的原因......但现在不是'fromdate = rs(“leave_from”)'和 'todate=rs("leave_to")' 如果我使用 'request.form' 代替 rs ...传递给数据库的值为零。
标签: asp-classic vbscript sql-server-2000