gpt4 book ai didi

sql - 给定一个日期如何使用经典的 asp 获取该月的第一个和最后一个日期

转载 作者:行者123 更新时间:2023-12-04 18:24:28 25 4
gpt4 key购买 nike

我在数据库中有一个日期字段,它以 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 显示记录...我在顶部的查询中遗漏了什么吗..

最佳答案

通过从 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 >= firstDayOfMonth AND date <= 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"

(我确定有人可以重写该查询,以免一团糟)

关于sql - 给定一个日期如何使用经典的 asp 获取该月的第一个和最后一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com