【问题标题】:Given a datehow do I get the first and the last date of that month using classic asp给定日期如何使用经典 asp 获取该月的第一个和最后一个日期
【发布时间】:2012-05-25 18:23:38
【问题描述】:

我在数据库中有一个日期字段,它以 mm/dd/yyy 格式存储值。 使用它如何获取给定日期的第一天和最后一天。 我正在使用以下代码显示数据库中的记录

<%
sql="select * from order_details where emp_name='"&session("emp")&"' order by 1,2,3,4,5,6,7"
        rs.open sql,con,1,2
        do while not rs.eof
        session("wk")=weekdayname(weekday((rs("date"))))
    %>
<tr>

    <td align="center"><%=rs("emp_name")%></td>
    <td align="center"><%=rs("food_had")%></td>
    <td align="center"><%=rs("quantity")%></td>
    <td align="center"><%=session("wk")%></td>
    <td align="center"><%=day(rs("date"))&"/"&month(rs("date"))&"/"&year(rs("date"))%></td>
    <td align="center"><%=rs("grand_total")%></td>

</tr>
<%
        rs.movenext
        loop
        rs.close
%>

session("wk") 给了我工作日的名称。

现在我有了编辑查询的代码,以便我可以使用 firstdayofthemonth 和 lastdatofthemonth 来显示记录,但它不起作用 这是我用的

<%
sql="select * from order_details where emp_name='"&session("emp")&"' and date BETWEEN '"&session("firstDayOfMonth")&"' AND '"&session("firstDayOfMonth")&"'"
        rs.open sql,con,1,2
        do while not rs.eof
        session("m")=monthname(month((rs("date"))))
        session("firstDayOfMonth") = rs("date") + 1 - day(rs("date"))
        session("lastDayOfMonth") = dateadd("m", 1, session("firstDayOfMonth") ) - 1
    %>   
<tr>   

    <td align="center"><%=rs("emp_name")%></td>   
    <td align="center"><%=rs("food_had")%></td>   
    <td align="center"><%=rs("quantity")%></td>   
    <td align="center"><%=session("wk")%></td>   
    <td align="center"><%=day(rs("date"))&"/"&month(rs("date"))&"/"&year(rs("date"))%></td>   
    <td align="center"><%=rs("grand_total")%></td> 
    <td align="center"><%=session("firstDayOfMonth")%></td>   
    <td align="center"><%=session("lastDayOfMonth")%></td> 


</tr>
<%
        rs.movenext
        loop
        rs.close
    %>

如果我从查询中删除 "and date BETWEEN '"&session("firstDayOfMonth")&"' AND '"&session("firstDayOfMonth")&"'" 显示第一个和最后一个日期...但我想使用 firstdate 和 lastdate 显示记录...我在顶部的查询中遗漏了某些内容..

【问题讨论】:

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


    【解决方案1】:

    您可以通过从 rs("date") 变量中减去天数来轻松计算 firstDayOfMonth。

    然后,要获得该月的最后一天,请使用 dateadd() 函数添加 1 个月,然后减去一天:

            firstDayOfMonth = rs("date") + 1 - day(rs("date"))
            lastDayOfMonth = dateadd("m", 1, firstDayOfMonth ) - 1
    

    我已在您的代码中进行了如下设置:

    <%   
    sql="select * from order_details where emp_name='"&session("emp")&"' order by 1,2,3,4,5,6,7"   
            rs.open sql,con,1,2   
            do while not rs.eof   
            session("wk")=weekdayname(weekday((rs("date"))))   
            firstDayOfMonth = rs("date") + 1 - day(rs("date"))
            lastDayOfMonth = dateadd("m", 1, firstDayOfMonth ) - 1
        %>   
    <tr>   
    
        <td align="center"><%=rs("emp_name")%></td>   
        <td align="center"><%=rs("food_had")%></td>   
        <td align="center"><%=rs("quantity")%></td>   
        <td align="center"><%=session("wk")%></td>   
        <td align="center"><%=day(rs("date"))&"/"&month(rs("date"))&"/"&year(rs("date"))%></td>   
        <td align="center"><%=rs("grand_total")%></td> 
        <td align="center"><%=fdate(firstDayOfMonth) ></td>   
        <td align="center"><%=fdate(lastDayOfMonth) ></td> 
    
    </tr>   
    <%   
            rs.movenext   
            loop   
            rs.close   
    %>   
    

    编辑: 如果要过滤当前月份的数据,可以更改 sql 语句以添加 WHERE date &gt;= firstDayOfMonth AND date &lt;= lastDayOfMonth 子句,如下所示:

     sql="select * from order_details where emp_name='" & session("emp") & "' " & _ 
         "WHERE date >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE())) + 1 - DAY(DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))) " &_
         "AND date <= DATEADD(MONTH, 1, DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE())) + 1 - DAY(DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE())))) - 1 " &_
         "order by 1,2,3,4,5,6,7" 
    

    (我相信有人可以重写那个查询,以免一团糟)

    【讨论】:

    • 如何使用 firstDayOfMonth 和 lastDayOfMonth 显示记录
    • 如果你想使用凌乱的 sql 查询,你可以查看我更新的答案
    • 我不能将其用作我的查询的一部分来显示记录请检查我已编辑的问题..
    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2012-05-29
    • 2013-01-06
    • 2020-06-04
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多