SQL सर्वर रिपोर्टिंग सेवाओं(VB.Net) में पिछले कैलेंडर माह के लिए पहला और अंतिम दिन खोजें




date reporting-services (8)

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)

मैं एमएस एसक्यूएल सर्वर रिपोर्टिंग सेवाओं में एक रिपोर्ट बना रहा हूं और पिछले कैलेंडर माह की पहली और आखिरी तिथियां होने के लिए डिफ़ॉल्ट स्टार्ट एंड एंड डेट रिपोर्ट पैरामीटर सेट करने की आवश्यकता है और सहायता चाहिए।

रिपोर्ट महीने के दूसरे कैलेंडर दिन पर उत्पन्न होती है और मुझे इसके लिए मूल्यों की आवश्यकता होती है:

पिछला कैलेंडर महीना
- पहला दिन
- आखरी दिन

मैं DateAdd के साथ काम कर रहा हूं, लेकिन अभिव्यक्ति बनाने में सफल नहीं रहा हूं (VB.NET में जैसा कि मैं इसे समझता हूं)। मैं वास्तव में किसी भी मदद की सराहना करता हूं जो आप मुझे दे सकते हैं!


यह आपको कोई तारीख नहीं देगा:

=FormatDateTime(DateAdd("m", -1, DateSerial(Year(Today()), Month(Today()), 1)), 
DateFormat.ShortDate)

यह आपको डेटाटाइम देगा:

=dateadd("m",-1,dateserial(year(Today),month(Today),1)) 

सी # में:

new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1)
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(-1)

एसएसआरएस का उपयोग करते हुए अभिव्यक्ति सबसेट में वास्तविक VB.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))  

मुझे पता है कि यह StartDate (पिछले महीने के पहले दिन) के लिए थोड़ा सा पुनरावर्ती है। क्या मैं यहां कुछ भी याद कर रहा हूं? ये सख्ती से तारीख फ़ील्ड (यानी कोई समय नहीं) हैं, लेकिन मुझे लगता है कि इसे लीप वर्ष, आदि पर कब्जा करना चाहिए।

मैंने कैसे किया?


मैं इसे हल करने के लिए एक सरल जवाब की तलाश में था। जो मुझे मिला वह यहां है

यह साल और महीने को विभाजित करेगा, एक महीने का समय लेगा और पहला दिन प्राप्त करेगा।

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


ये कार्य मेरे लिए बहुत उपयोगी रहे हैं - विशेष रूप से सदस्यता रिपोर्ट स्थापित करने में; हालांकि, मैंने देखा कि ऊपर दिए गए वर्तमान माह फ़ंक्शन के अंतिम दिन का उपयोग करते समय, यह तब तक कार्य करता है जब तक कार्यवाही महीने में वर्तमान माह की समान संख्या होती है। मैंने इन संशोधनों के माध्यम से काम किया है और परीक्षण किया है और उम्मीद है कि वे भविष्य में अन्य डेवलपर्स की मदद करेंगे:

तिथि सूत्र: पिछले महीने का पहला दिन खोजें:

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)

मैं एसएसआरएस से परिचित नहीं हूं, लेकिन आप DateTime कन्स्ट्रक्टर का उपयोग करके वीबी.Net में पिछले महीने की शुरुआत और अंत प्राप्त कर सकते हैं, जैसे:

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# yourDate #12/23/2003# )


        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






calendar