Tag Archives for " sql "

Microsoft SQL Server – Datum abfragen

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

Berichtsgenerator in den SQL Server Reporting Services öffnet sich nicht

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.“

Berichts-Generator in den SQL Server Reporting Services

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.