Nie mogłem znaleźć rozwiązania, które podaje pierwszy i ostatni dzień poprzedniego miesiąca wraz z datownikiem. Mam nadzieję, że to pomoże innym. Jeśli istnieje już rozwiązanie tego problemu, przepraszam.
Oto rozwiązanie.
SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) - 2, 0) as FirtDayPreviousMonthWithTimeStamp,
DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp
To zwróci następujący komunikat if currentdate = '2012-7-31'
wynik: 2012-06-01 00:00:00.000 2012-06-30 23:59:59.000
To zwróci następujący komunikat if currentdate = '2012-1-1'
wynik: 2011-12-01 00:00:00.000 2011-12-31 23:59:59.000
sql-server
datetime
Jay S.
źródło
źródło
Odpowiedzi:
źródło
-1
wDATEDIFF
tym wyrzuci i błąd, żeThe arguments to the following function are not valid: DATEDIFF
Pierwszy dzień bieżącego tygodnia.
Ostatni dzień bieżącego tygodnia.
Pierwszy dzień ubiegłego tygodnia.
Ostatni dzień ostatniego tygodnia.
Pierwszy dzień następnego tygodnia.
Ostatni dzień następnego tygodnia.
Pierwszy dzień bieżącego miesiąca.
Ostatni dzień bieżącego miesiąca.
W tym przykładzie data Działa tylko w dniu 31., a pozostałe dni nie.
Pierwszy dzień ostatniego miesiąca.
Ostatni dzień ostatniego miesiąca.
Pierwszy dzień następnego miesiąca.
Ostatni dzień następnego miesiąca.
Pierwszy dzień bieżącego roku.
Ostatni dzień bieżącego roku.
Pierwszy dzień ubiegłego roku.
Ostatni dzień ubiegłego roku.
Pierwszy dzień następnego roku.
Ostatni dzień następnego roku.
źródło
źródło
Rozwiązanie
Aby faktycznie obliczyć żądane wartości, uwzględnij następujące elementy w swoim języku SQL.
Należy pamiętać, że należy go wkleić wcześniej niż jakiekolwiek instrukcje odwołujące się do parametrów, ale od tego momentu można odwoływać się do @FirstDayOfLastMonth i @LastDayOfLastMonth w swoim kodzie.
Przykład
Zobaczmy, jak działa kod:
Uruchom powyższy kod, aby uzyskać następujące dane wyjściowe:
Uwaga: pamiętaj, że dzisiejszą datą jest dla mnie 12 września 2016 r .
Wspólne parametry daty
Chcesz więcej?
Aby ustawić bardziej wszechstronny zakres przydatnych parametrów związanych z datą, uwzględnij w swoim SQL:
Najbardziej sensowne byłoby włączenie go wcześniej, najlepiej na początku procedury lub zapytania SQL.
Po zadeklarowaniu parametrów można odwoływać się w dowolnym miejscu kodu, tyle razy, ile ich potrzebujesz.
Przykład
Zobaczmy, jak działa kod:
Uruchom powyższy kod, aby uzyskać następujące dane wyjściowe:
Jeśli brakuje twojego kraju, to dlatego, że nie znam jego kodu. Byłoby bardzo pomocne i mile widziane, gdybyś mógł edytować tę odpowiedź i dodać nową kolumnę dla swojego kraju.
Z góry dziękuję.
Uwaga: pamiętaj, że dzisiejszą datą jest dla mnie 12 września 2016 r .
Bibliografia
Więcej informacji na temat międzynarodowego standardu daty ISO8601 można znaleźć pod tym linkiem:
Więcej informacji na temat międzynarodowego standardu dat ODBC można znaleźć pod tym linkiem:
Aby wyświetlić listę formatów dat, z których pracowałem, kliknij ten link:
Aby uzyskać więcej informacji na temat typu danych DATETIME, kliknij ten link:
źródło
źródło
Od SQL2012 wprowadzono nową funkcję o nazwie
EOMONTH
. Korzystając z tej funkcji, można łatwo znaleźć pierwszy i ostatni dzień ostatniego miesiąca.źródło
Użyłem następującej logiki w raportach SSRS.
źródło
Możesz uzyskać pierwszy i ostatni dzień poprzedniego miesiąca (ze znacznikiem czasu) w SQL Server, wykonując
źródło
Weź jakąś datę bazową, która jest 31. dnia jakiegoś miesiąca, np. „20011231”. Następnie zastosuj
następującą procedurę (poniżej podałem 3 identyczne przykłady, różni się tylko wartość @dt).
źródło
Oto dość prosty i dynamiczny sposób. Dla ostatniego dnia ostatniego miesiąca odejmij bieżący dzień numeryczny od dzisiejszej daty. Dla pierwszego dnia ostatniego miesiąca użyj tego samego kodu, po prostu powtórz odejmowanie numerycznego dnia od poprzedniego wyniku i dodaj 1.
źródło
Aby uzyskać pierwszą datę z ostatniego miesiąca:
Aby uzyskać ostatnią datę z ostatniego miesiąca:
źródło
Nie widziałem jeszcze tego rozwiązania przedstawionego; to moja preferencja ze względu na prostszą czytelność:
źródło
Oto najprostszy sposób, jaki znam, aby uzyskać pierwszy dzień poprzedniego miesiąca:
Krok 1: Przenieś dane do Postgres
Krok 2:
źródło