SQL Server Reporting Services(VB)에서 이전 달력 달의 첫째 날과 마지막 날을 찾습니다.네트)
MS SQL Server Reporting Services에서 보고서를 만들고 있으며 기본 시작 및 종료 날짜 보고서 매개 변수를 이전 달력 월의 처음 및 마지막 날짜로 설정해야 하므로 도움이 필요합니다.
보고서는 월의 두 번째 달력 요일에 생성되며 다음에 대한 값이 필요합니다.
이전 달력 월
첫날
마지막 날
DateAdd로 작업했지만 식(VB)을 만들지 못했습니다.내가 이해하는 바로는 NET).저는 당신이 저에게 도움을 주시면 감사하겠습니다!
Randall, 다음은 SSRS에서 현재 월을 참조하여 처음과 마지막 날을 얻기 위해 찾은 VB 표현식입니다.
지난달 첫째 날:
=dateadd("m",-1,dateserial(year(Today),month(Today),1))
이달 첫째 날:
=dateadd("m",0,dateserial(year(Today),month(Today),1))
다음 달 첫째 날:
=dateadd("m",1,dateserial(year(Today),month(Today),1))
지난달 마지막 날:
=dateadd("m",0,dateserial(year(Today),month(Today),0))
이달의 마지막 날:
=dateadd("m",1,dateserial(year(Today),month(Today),0))
다음 달 마지막 날:
=dateadd("m",2,dateserial(year(Today),month(Today),0))
VisualBasic 기능에 대한 MSDN 설명서는 이 기능이 예상 범위를 벗어나는 값을 수용한다고 설명합니다.year,month,그리고.day매개 변수이를 통해 유용한 날짜 상대 값을 지정할 수 있습니다.예를 들어, 다음에 대한 값이 됩니다.Day"전월의 마지막 날"을 의미합니다.그것은 말이 됩니다: 그것은 현재 달의 첫째 날 전날입니다.
이러한 기능은 특히 구독 보고서를 설정하는 데 큰 도움이 되었습니다. 그러나 위에 게시된 현재 달의 마지막 날 기능을 사용할 때는 진행 월이 현재 달과 동일한 날짜만 있으면 작동한다는 것을 알게 되었습니다.저는 이러한 수정 사항들을 검토하고 테스트했으며 앞으로 다른 개발자들에게 도움이 되기를 바랍니다.
날짜 공식:지난 달의 첫째 날 찾기:
DateAdd("m", -1, DateSerial(Year(Today()), Month(Today()), 1))
지난 달의 마지막 날 찾기:
DateSerial(Year(Today()), Month(Today()), 0)
현재 달의 첫째 날 찾기:
DateSerial(Year(Today()),Month(Today()),1)
현재 달의 마지막 날 찾기:
DateSerial(Year(Today()),Month(DateAdd("m", 1, Today())),0)
Dim thisMonth As New DateTime(DateTime.Today.Year, DateTime.Today.Month, 1)
Dim firstDayLastMonth As DateTime
Dim lastDayLastMonth As DateTime
firstDayLastMonth = thisMonth.AddMonths(-1)
lastDayLastMonth = thisMonth.AddDays(-1)
저는 SSRS에 대해 잘 모르지만, VB에서는 전월의 시작과 끝을 알 수 있습니다.를 사용한 네트DateTime생성자, 다음과 같습니다.
Dim prevMonth As DateTime = yourDate.AddMonths(-1)
Dim prevMonthStart As New DateTime(prevMonth.Year, prevMonth.Month, 1)
Dim prevMonthEnd As New DateTime(prevMonth.Year, prevMonth.Month, DateTime.DaysInMonth(prevMonth.Year, prevMonth.Month))
(yourDate아무 것이나 될 수 있습니다DateTime객체(예:DateTime.Today또는#12/23/2003#)
C#:
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1)
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)
실제 VB를 번역하는 데 어려움을 겪고 있었습니다.SSRS가 사용하는 식 하위 집합에 대한 NET.당신은 확실히 저에게 영감을 주었고 이것이 제가 생각해낸 것입니다.
StartDate
=dateadd("d",0,dateserial(year(dateadd("d",-1,dateserial(year(Today),month(Today),1))),month(dateadd("d",-1,dateserial(year(Today),month(Today),1))),1))
End Date
=dateadd("d",0,dateserial(year(Today),month(Today),1))
시작 날짜(지난달 1일)에 대해서는 다소 재귀적인 것으로 알고 있습니다.제가 여기서 빠뜨린 것이 있습니까?이것들은 엄격하게 날짜 필드(즉, 시간 없음)이지만, 저는 이것이 윤년 등을 포착해야 한다고 생각합니다.
나 어떻게 했죠?
저는 이것을 스스로 해결하기 위해 간단한 답을 찾고 있었습니다.여기 제가 발견한 것이 있습니다.
이것은 연도와 월을 나누고, 한 달 휴가를 내고 첫 날을 얻게 됩니다.
firstDayInPreviousMonth = DateSerial(Year(dtmDate), Month(dtmDate) - 1, 1)
현재에서 이전 달의 첫 번째 날을 가져옵니다.
lastDayInPreviousMonth = DateSerial(Year(dtmDate), Month(dtmDate), 0)
자세한 내용은 http://msdn.microsoft.com/en-us/library/aa227522%28v=vs.60%29.aspx 에서 확인할 수 있습니다.
이것은 당신에게 즉시 날짜를 제공할 것입니다.
=FormatDateTime(DateAdd("m", -1, DateSerial(Year(Today()), Month(Today()), 1)),
DateFormat.ShortDate)
이것은 당신에게 날짜 시간을 제공할 것입니다.
=dateadd("m",-1,dateserial(year(Today),month(Today),1))
Dim aDate As DateTime = #3/1/2008# 'sample date
Dim StartDate As DateTime = aDate.AddMonths(-1).AddDays(-(aDate.Day - 1))
Dim EndDate As DateTime = StartDate.AddDays(DateTime.DaysInMonth(StartDate.Year, StartDate.Month) - 1)
'to access just the date portion
' StartDate.Date
' EndDate.Date
언급URL : https://stackoverflow.com/questions/2059977/find-first-and-last-day-for-previous-calendar-month-in-sql-server-reporting-serv
'programing' 카테고리의 다른 글
| 루비 클래스 인스턴스 변수 대 클래스 변수 (0) | 2023.06.03 |
|---|---|
| UI 레이블 주위에 테두리를 그리는 방법은 무엇입니까? (0) | 2023.06.03 |
| git의 "rebase --reserve-merges"가 정확히 무엇을 하는 것입니까 (그리고 그 이유는 무엇입니까?) (0) | 2023.05.09 |
| Git 저장소에서 디렉토리의 이름을 올바르게 변경하는 방법은 무엇입니까? (0) | 2023.05.09 |
| Xcode 4 - 새 Macintosh 설치에서 프로파일 프로비저닝 시 "유효한 서명 ID를 찾을 수 없음" 오류 (0) | 2023.05.09 |