VBScript - 数据库 - Recordset - 如何在数据库中传递DateDiff值

时间:2012-05-09 09:46:55

标签: asp-classic vbscript sql-server-2000

我正在使用ASP的DateDiff()函数来查找两个日期之间的日期差异。

函数工作正常,并显示两个日期之间的确切日期差异,但是当在数据库中插入此值时,它会将9作为值,而不考虑任何日期差异。

假设两个日期之间的差异超过15或20天,数据库中的差异为“9”。

我使用INT作为显示日期差异的列的DATA TYPE。

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

3 个答案:

答案 0 :(得分:1)

数据类型与此无关。在会话中存储值不是解决方案。您可以使用常规变量。

在您的代码中,您似乎始终对fromdatetodate使用相同的值。这是因为您不迭代结果集中的行。

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将您的值转换为日期,并使用此值来计算差异。

答案 1 :(得分:0)

您的问题是,您搜索“select * from emp_leave_details”,它始终提供该表中的所有记录。您检索第一个记录的值并对这些值进行差异,这将导致始终相同的值,这是正常的。从你的问题来看,目前还不清楚你真正想做什么。我想如此想要选择像

这样的记录
Select * from emp_leave_details where emp_name=<%=request.Form("name")%>

并在此基础上添加一个带有计算no_of_leave_taken的新记录。

答案 2 :(得分:0)

对不起伙计我的坏... 这是我调用的数据库字段名称而不是

fromdate= request.form("from")
todate= request.form("to")

我在说这个

fromdate= request.form("leave_from")
todate= request.form("leave_to")

再次抱歉..但我非常感谢大家为我提供所有可能的解决方案。

感谢。