In Microsoft SQL (evtl. auch in anderen SQL-Sprachen) lassen sich mit den folgenden SQL Select Statements verschiedene Zeitpunkte abfragen:
Aktuelles Datum
(current date)
SELECT CAST(CURRENT_TIMESTAMP AS DATE) AS date_current_date
Anfang der letzten Woche (Montag als Start-Tag)
(start of last week (begin: monday))
SELECT CAST(DATEADD(WEEK, -1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AS start_of_last_week
Ende der letzten Woche (Montag als Start-Tag)
(end of last week (begin: monday))
SELECT CAST(DATEADD(WEEK, -1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 7, CURRENT_TIMESTAMP)) AS DATE) AS end_of_last_week
Anfang der aktuellen Woche (Montag als Start-Tag)
(start of current week (begin: monday))
SELECT CAST(DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP) AS DATE) AS start_of_current_week
Ende der aktuellen Woche (Montag als Start-Tag)
(end of current week (begins monday))
SELECT CAST(DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 7, CURRENT_TIMESTAMP) AS DATE) AS end_of_current_week
Anfang der nächsten Woche (Montag als Start-Tag)
(start of next week (begin: monday))
SELECT CAST(DATEADD(WEEK, 1 ,DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 1, CURRENT_TIMESTAMP)) AS DATE) AS start_of_next_week
Ende der nächsten Woche (Montag als Start-Tag)
(end of next week (begin: monday))
SELECT CAST(DATEADD(WEEK, 1, DATEADD(DAY, -DATEPART(WEEKDAY, CURRENT_TIMESTAMP) + 7, CURRENT_TIMESTAMP)) AS DATE) AS end_of_next_week
Anfang des letzten Monats
(start of last month)
SELECT CAST(DATEADD(MONTH, -1 , DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP),1)) AS DATE) AS start_of_last_month
dateadd(m, -1, dateadd(d, (-1) * (datepart(d, getdate())-1), getdate()))
Ende des letzten Monats
(end of last month)
SELECT CAST(DATEADD(DAY, -1 , DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP),1)) AS DATE) AS end_of_last_month
dateadd(d, -1, dateadd(m, 0, dateadd(d, (-1) * (datepart(d, getdate())-1), getdate())))
Anfang des aktuellen Monats
(start of current month)
SELECT DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP),1) AS start_of_current_month
Ende des aktuellen Monats
(end of current month)
SELECT DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP),1))) AS end_of_current_month
Anfang des nächsten Monats
(start of next month)
SELECT DATEADD(MONTH, 1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP), 1)) AS start_of_next_month
dateadd(m, -1, dateadd(d, (-1) * (datepart(d, getdate())-1), getdate()))
Ende des nächsten Monats
(end of next month)
SELECT DATEADD(DAY, -1, DATEADD(MONTH, 2, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP),MONTH(CURRENT_TIMESTAMP), 1))) AS end_of_next_month
Anfang des letzten Jahres
(start of last year)
SELECT DATEADD(YEAR, -1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP), 1, 1)) AS start_of_last_year
Ende des letzten Jahres
(end of last year)
SELECT DATEADD(DAY, -1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP), 1, 1)) AS end_of_last_year
Anfang des aktuellen Jahres
(start of current year)
SELECT DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP), 1, 1) AS start_of_current_year
Ende des aktuellen Jahres
(end of current year)
SELECT DATEADD(DAY, -1, DATEADD(YEAR, 1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP), 1, 1))) AS start_of_current_year
Anfang des nächsten Jahres
(start of next year)
SELECT DATEADD(YEAR, 1, DATEFROMPARTS(YEAR(CURRENT_TIMESTAMP), 1, 1)) AS start_of_next_year
Ende des nächsten Jahres
(end of next year)
SELECT DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 2, -1)
AS end_of_next_year
UPDATE:
Das Service Pack 2 für SQL Server 2008 R2 behebt dieses Problem!
Bei dem Versuch, einen Report direkt aus den SQL Server Reporting Services im Berichtsgenerator zu öffnen, treten derzeit Probleme auf, die mich vor eine Herausforderung stellen. Sobald ich den gewünschten Report auswähle und auf den Berichtsgenerator klicke, erscheint eine irritierende Fehlermeldung:
„Sie müssen .NET Framework 3.5 auf diesem Computer installieren, um den Berichts-Generator verwenden zu können. Klicken Sie auf ‚installieren‘, um das Microsoft Download Center aufzurufen und .NET Framework 3.5 zu installieren.“
Das Kuriose dabei ist, dass .NET Framework bereits auf meinem Rechner installiert ist. Bei dem Versuch, es erneut zu installieren, erhalte ich lediglich die Meldung, dass .NET Framework bereits vorhanden ist.
Um dennoch mit dem Report arbeiten zu können, greife ich auf den Report Builder des SQL Servers zurück, der es mir ermöglicht, den Report zu öffnen und zu bearbeiten. Dennoch bevorzuge ich den Berichtsgenerator, da er mir die Möglichkeit bietet, kleinere Änderungen am Report schnell und direkt vorzunehmen, was meinen Workflow erheblich verbessert.
Nach längerem Hin und Her, das auch einige Frustration mit sich brachte, habe ich endlich die Lösung für dieses Rätsel gefunden: Die Kompatibilitätsansicht des Internet Explorers. Normalerweise habe ich diese Ansicht deaktiviert, da einige unserer Intranetseiten damit Probleme haben.
Für die SQL Server Reporting Services scheint jedoch genau diese Ansicht benötigt zu werden. Also habe ich im Internet Explorer 9 unter „Extras“ die Kompatibilitätsansicht für die SSRS aktiviert, und plötzlich öffnet sich der Berichtsgenerator wieder wie gewohnt, ohne jegliche Fehlermeldung.
Es ist erstaunlich, wie ein kleines Häkchen in den Browsereinstellungen eine so große Auswirkung haben kann. Diese Entdeckung hat mir nicht nur geholfen, mein Problem zu lösen, sondern auch dazu beigetragen, mein Verständnis für die Interaktion verschiedener Softwarekomponenten zu vertiefen.