2012-05-18 1 views
3

mm/dd/yyy 형식의 값을 저장하는 데이터베이스에 날짜 필드가 있습니다. 이 방법을 사용하면 주어진 날짜의 첫 번째 날과 마지막 날을 가져올 수 있습니다. 나는 ("WK") 데이터베이스에서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 
%> 

세션을 레코드를 표시 내게 요일 이름을 제공하기 위해 다음 코드를 사용하고 있습니다. 지금은이 내가

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

내가 를 제거하는 경우 "날짜 BETWEEN을 사용하는 것입니다 작동하지 않는 레코드 만 표시 할 firstdayofthemonth 및 lastdatofthemonth을 사용할 수 있도록 내가 쿼리를 편집 코드를 가지고

' "& 세션 ("firstDayOfMonth ") &"'AND ' "& 세션 ("firstDayOfMonth ") &"' " 쿼리에서 첫 번째와 마지막 날짜를 보여줍니다 ...하지만 난 firstdate 및 lastdate를 사용하여 레코드를 표시 할 ... 내 질문에 뭔가를 놓치고있다. ..

답변

3

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

편집 : 현재 달의 데이터를 필터링 할 경우 다음과 같은 WHERE date >= firstDayOfMonth AND date <= lastDayOfMonth 절을 추가하기 위해 SQL 문을 변경할 수 있습니다

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

를 사용하여 레코드를 표시 할 수 있습니다 (I 누군가가 일하지 않는 절대 엉망 해당 쿼리를 다시 작성할 수 있습니다 확신) 대답 – nvuono

+0

내 쿼리의 일부로 이것을 사용하여 레코드를 표시 할 수 없습니다. Pls 내 질문을 확인합니다. 내가 편집했습니다. –