GETDATE() und Julianisches Datum

SELECT YEAR(GETDATE())*1000 + DATEPART(y,GETDATE()) AS the_date the_date ----------- 2004182 (1 row(s) affected) Danke an Jonathan van Houtte! mehr »

Unterschiede zwischen DECIMAL und NUMERIC

Der Unterschied zwischen beiden Datentypen ist mehr als subtil im SQL 92 Standard. mehr »

Das Alter einer Person

DECLARE @d DATETIME SET @d = '23.07.1968' SELECT DATEDIFF(yyyy,CAST(@d AS DATETIME),GETDATE()) - (CASE WHEN DATEADD(yyyy,DATEDIFF(yyyy,CAST(@d AS DATETIME),GETDATE()),CAST(@d AS DATETIME)) > GETDATE() THEN 1 ELSE 0 END)… mehr »

Ermittlung des n-ten Datensatzes

Solche und ähnliche Fragen sind häufig zu beobachten. Die Antwort ist allerdings nicht immer einfach, da es sich hier eigentlich um Zeilenpositionierungsprobleme handelt, die streng genommen einer relationalen Datenbank mit ihrem set-basierten Ansatz wid… mehr »

Neukompilierung Gespeicherter Prozeduren und SET Optionen

Original von Tibor Karaszi; deutsche Übersetzung von Frank Kalis Überblick Die Verwendung Gespeicherter Prozeduren wird allgemein als gute Praktik betrachtet. Einer der Vorteile Gespeicherter Prozeduren ist deren Vorkompilierung. Dies bedeutet, dass zur… mehr »

DDL Skripte generieren

Original von Tibor Karaszi; deutsche Übersetzung von Frank Kalis Übersicht Im folgenden finden Sie verschiedene Techniken und Produkte, die DDL Skripte für Ihre Datenbankobjekte und/oder INSERT Statements für Ihre Daten generieren können.… mehr »

Der Unterschied zwischen SET und SELECT

Original von Narayana Vyas Kondreddi; deutsche Übersetzung von Frank Kalis Traditionell waren SQL Server Datenbankentwickler es gewohnt, SELECT zu verwenden um Werte einer Variablen zuzuweisen. Dies funktionierte einwandfrei und war eine absolut gültige… mehr »

Datenbanken vor Benutzern verstecken

Dies hängt eigentlich von der Applikation ab, mit der sich die Benutzer zum SQL Server verbinden. Tatsache ist, dass sysdatabases von jedem Benutzer gelesen werden kann, der sich verbindet. Egal, ob die Applikation nun die Datenbanken zeigt oder nicht, w… mehr »

Dynamisches ORDER BY Kriterium

Vielfach ist es üblich, dynamisches SQL zu verwenden, wenn eine Prozedur für verschiedene Sortierkriterien verwendet werden soll. Dabei kann dieses dynamische SQL relativ einfach vermieden werden. mehr »

Spielt die Anordnung der Tabellen bei einem INNER JOIN eine Rolle für die Performance

Nicht wirklich. Da bei einem INNER JOIN nur die Werte beider Tabellen gefunden werden, bei denen die Spaltenwerte die per JOIN verknüpft werden, identisch sind, gilt folgendes:A=B was logischerweise auch bedeutet:B=A Von daher ist die Tabellen… mehr »

Spalte nachträglich in IDENTITY Spalte ändern

Nun, erst einmal gibt es keine *IDENTITY* Spalte. IDENTITY ist eine Eigenschaft, die für numerische Spalten definiert werden kann.Leider lässt sich die IDENTITY Eigenschaft nicht einfach nachträglich für eine numerische Spalte defineren. Dafür muss die o… mehr »

IP Adresse einer User Connection ermitteln

Definitiv etwas auf meiner persönlichen SQL Server Wish List. Es wäre schön, wenn man diese Information ähnlich wie HOST_NAME() abfragen könnte. set nocount on declare @ip varchar(255), @cmd varchar(100) set @cmd = 'ping -n 1 ' + HOST_NAME() create… mehr »

Codds 12 Regeln

Diese Regeln wurden von E.F.Codd formuliert und 19851) publiziert. Sie beschreiben, was eine relationale Datenbank unterstützen muss, um tatsächlich relational zu sein. So, ohne weitere Einführung, tauchen wir hinein ins Evangelium der relationalen Daten… mehr »

Einführung in SQL Server Clustering Teil 1

Original von Brad M. McGehee; deutsche Übersetzung von Frank Kalis Wenn Ihr unternehmenskritischer SQL Server mit einem Motherboard Fehler ausfällt, wie lange wird die Ausfallszeit sein? Eine Stunde, vier Stunden, ein Tag oder länger? Wieviel wird dies… mehr »

xp_cmdshell scheint sich aufzuhängen

Man sollte keine Befehle mit xp_cmdshell ausführen, die irgendeine Interaktion mit dem Benutzer erwarten. Diese warten dann auf irgendwelche Aktionen seitens des Benutzer, die nicht stattfinden und scheinen sich *aufgehängt* zu haben. Ein Bespiel hierfür… mehr »

Indexes mit Tabellen und Filegroups mappen

SELECT CAST(OBJECT_NAME(sysind.id) AS CHAR(20)) AS TableName , CAST(sysind.name AS CHAR(30)) AS IdxName , CAST(sysfg.groupname AS CHAR(10)) AS GroupName FROM sysindexes sysind INNER JOIN sysfilegroups sysfg ON sysind.groupid =… mehr »

Datum in das Format JJJJMMDDHHMMSS bringen

Eigentlich würde man so eine Aufgabe wahrscheinlich besser im Client code verarbeiten, aber wenn's denn unbedingt der Server sein soll, könnte dies folgendermaßen aussehen: DECLARE @date DATETIME SET @date = '19.10.2003 09:48:22' SELECT CAST(… mehr »

Verwendung eines Index erzwingen

USE pubs GO SELECT au_lname FROM authors (index=aunmind) mehr »

Monatsultimo ermitteln

Die Ermittlung bestimmter Tage taucht in dieser oder jener Form immer mal wieder auf. T-SQL bietet hierfür sehr wirkungsvolle Methoden an:SELECT DATEADD(DAY, -DAY(GETDATE()), CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME)) AS MonatsultimoMonats… mehr »

Erster und letzter Tag eines Jahres

DECLARE @dt DATETIME SET @dt = GETDATE() SELECT CAST(CAST(YEAR(@dt) AS CHAR(4))+'0101' AS DATETIME) AS Jahresanfang , CAST(CAST(YEAR(@dt) AS CHAR(4))+'-12-31T23:59:59.997' AS DATETIME) AS Jahresende Jahresanfang… mehr »

Tage eines Monats

DECLARE @d DATETIME SET @d = '31/01/2003 12:00:00' SELECT DAY(DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DAY(@d),@d)))) AS TageImMonat TageImMonat ----------- 31 (1 row(s) affected) Bei der Wahl des Datumsformat muss man vorsichtig sein. So… mehr »

Median berechnen

Es gibt anscheinend unterschiedliche Meinungen über die Berechnung des Median. Zum einen gibt es den 'financial' Median, der das arithmetische Mittel der beiden mittleren Werte ist, zum anderen den 'statistischen' Median, der der niedrigere (bzw. bei… mehr »

Ergebnis eines Dynamischen SQL Statements nach Ausführung weiterverwenden

DECLARE @stmt nvarchar(4000) DECLARE @rowcount bigint DECLARE @table nvarchar(255) SET @table = 'authors' SELECT @stmt = 'SELECT @count = COUNT(*) FROM ' + @table EXEC sp_executesql @stmt, N' @count bigint output', @rowcount OUTPUT IF @rowcount > 0… mehr »

Der Datumsbereich des SQL Servers

Select Cast(-53690 As DateTime) As 'Erstes Datum' , Cast(2958463.999999999 As DateTime) As 'Letztes Datum' Erstes Datum Letztes Datum ------------------------- ------------------------- 1753-01-01 00:00:00.000… mehr »

Dateiendung LDF für Logfiles

Die Dateiendung ist nur Konvention und kann irgendwie lauten. mehr »