2012-05-18 65 views
3

獲得該月的第一個和最後一個日期我有一個數據庫中的日期字段存儲格式爲mm/dd/yyy的值。 使用這個我怎樣才能得到給定日期的第一天和最後一天。 我使用這下面的代碼從數據庫中顯示的記錄鑑於datehow我使用經典asp

<% 
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 
%> 

會議(「周」)給了我平日的名字。

現在,我有我編輯的查詢代碼,使我可以使用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 
    %> 

如果我刪除「和日之間「‘&會議(‘firstDayOfMonth’)&’」與「」 &會議(‘firstDayOfMonth’)&「「從查詢」顯示第一個和最後一個日期......但我想顯示使用firstdate和lastdate記錄...我在頂部的查詢中誤解了一些東西..

回答

3

您可以通過從rs(「date」)變量中減去天數來輕鬆計算firstDayOfMonth。

然後拿到這個月的最後一天,你加1個月與DATEADD()函數,並通過減去一天跟進:

 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查詢,你可以檢查我的更新

+0

我怎麼可以顯示使用firstDayOfMonth和lastDayOfMonth –

+0

記錄回答 – nvuono

+0

我不能使用這作爲我的查詢顯示記錄的一部分請檢查我編輯過的問題.. –