2024년 6월 27일 목요일

ASP - DATE

 
'====================================
Description : 주의시작은 일요일이라 가정한다
'====================================
 '-- 해당날짜에 해당하는 날짜의 일요일과 토요일날짜 구해옴( 형식 chkdate : 2009-01-01)
 FUNCTION week_day(chkdate)
  SELECT CASE weekday(CDate(chkdate))
   CASE 1 : temp1 = CDate(chkdate) - 0 : temp2 = CDate(chkdate) + 6 '일
   CASE 2 : temp1 = CDate(chkdate) - 1 : temp2 = CDate(chkdate) + 5 '월
   CASE 3 : temp1 = CDate(chkdate) - 2 : temp2 = CDate(chkdate) + 4 '화
   CASE 4 : temp1 = CDate(chkdate) - 3 : temp2 = CDate(chkdate) + 3 '수
   CASE 5 : temp1 = CDate(chkdate) - 4 : temp2 = CDate(chkdate) + 2 '목
   CASE 6 : temp1 = CDate(chkdate) - 5 : temp2 = CDate(chkdate) + 1 '금
   CASE 7 : temp1 = CDate(chkdate) - 6 : temp2 = CDate(chkdate) + 0 '토
  END SELECT
  week_day = temp1 &"|"& temp2
 END FUNCTION

'-- 현재일의 주차
FUNCTION now_week(getdate)
  now_week = int((Day(getdate) - weekday(getdate)+13)/7)
 END FUNCTION

 '-- 해당달의 마지막일
 FUNCTION last_day(year,month)
  temp = CDate(LEFT(dateadd("m",1,year &"-"& month &"-01"),7) &"-01")-1
  last_day = Split(temp,"-")(2)
 END FUNCTION
 
 '-- 현재월의 주차( 형식 getdate : 2009-01-01)
 FUNCTION now_week(getdate)
  now_week = int((Day(getdate) - weekday(getdate)+13)/7)
 END FUNCTION
 
 '-- 해당년의 전달까지의 주차수
 FUNCTION month_week(year, month)
  week = 0
  FOR i = 1 TO month - 1
   week = week + now_week(year &"-"& i &"-"& last_day(year,i))
  NEXT
  month_week = week
 END FUNCTION
 
 '-- 해당년의 주차수의 일요일(안됨;;)
 FUNCTION week_sunday(year,week)
  week_sunday = CDate(year &"-01-01")+(week-1)*7+1-WEEKDAY(CDate(year& "-01-01")+(week-1)*7)
 END FUNCTION

 '-- 해당년의 주차수의 일요일(형식 now_month_week("2009","02","2") : 2009년2월2주차)
FUNCTION now_month_week(year,month,week_cnt)
  a = CDate(year &"-01-01") '-- 시작기준일
  b = Datepart("ww",year &"-"& month &"-01",1,3) '-- 해당월의 시작일의 주차
  c = 7 * b '--7에 주차를 곱하면 몇일 뒤 인지 나옴
  d = DateAdd("d",c,a) '--시작기준일에서 날짜를 c 만큼 더해준다
  '-- 해당월의 시작일이 일요일이면 첫주이므로 원하는주차에서 7을 빼준다.
  IF weekday(year &"-"& month &"-01") = 1 THEN
   d = CDate(d) + (7 * week_cnt) - 7
  ELSE
   d = CDate(d) + (7 * week_cnt)
  END IF
  now_month_week = d
 END FUNCTION

function num_Week(arg_num)
    Select Case arg_num
        Case 1
            we = "일요일"
        Case 2
            we = "월요일"
        Case 3
            we = "화요일"
        Case 4
            we = "수요일"
        Case 5
            we = "목요일"
        Case 5
            we = "금요일"
        Case 7
            we = "토요일"
    End Select
    num_Week = we
end function

function Now_Week() "오늘의 요일
    MyWeekDay = Weekday (Now())
    Now_Week = num_Week(MyWeekDay)
end function

function first_Week() "이번달 1일의 요일
    MyWeekDay = Weekday(DateAdd("d",1-day(now()), now()) )
    first_Week = num_Week(MyWeekDay)
end function

function Count_Week() "오늘이 몇주차?
        "2째주 일요일 찾기
        se_sun = 9 - Weekday(DateAdd("d", 1-day(now()), now()))
        "2째주 일요일보다 작은 경우 오늘은1주차
        if cint(se_sun) > cint(day(now())) then
                Count_Week = 1
        else "2주이상
                "남은 날짜 계산
                mod_day = cint(day(now()) - se_sun + 1)
                " 남은 날짜를 7로 나눈 나머지가 0이면 몫을사용 아니면 몫+1 한다.
                if (mod_day mod 7) = 0 then
                        Count_Week = (mod_day / 7) + 1 "1주차를 더한다
                else
                        Count_Week = int(mod_day / 7) + 2 "1주차와 마지막주를 더한다 합이 2주
                end if
        end if
end function

댓글 없음:

댓글 쓰기

ORACLE DB - INDEX

  /***********************************************   Oracle DB 인덱스 생성    Oracle 19c 기준으로 작성되었습니다.  *****************************************...