Neo-IT



Week: 26
Uw ip adres is: 54.81.197.24

MSSQL

Expired datums netjes afhandelen:
WHERE ISNULL(x.eendatum, getdate()+1) > getdate()

De laatst gewijzigde tabellen en views opvragen
SELECT name FROM sysobjects WHERE xtype='U' and YEAR(crdate) = Year(getdate()) ORDER by crdate desc

Hernoemen van tabellen of views
sp_rename T_tabelOUD, T_tabelNieuw

Datum formaat dd-mm-yyyy
CONVERT(varchar, veldnaam, 105) AS datumNL

Date time veld alleen de tijd tonen in hh:mm
CONVERT(varchar(5), veldnaam, 108) AS tijd

Sorteren op volgorde van datum
ORDER BY CONVERT(DateTime, startdatum,101)  DESC

Aantal dagen oud berekenen
SELECT DATEDIFF(day, '1971-08-15', GETDATE());

Leeftijd berekenen  
DATEDIFF(hour,geboortedatum,GETDATE())/8766

Een multiple update
UPDATE TOP (10000) T_tabel1  SET T_tabel1.veldx = L_tabel.veldx
FROM T_tabel1
JOIN L_tabel ON L_tabel.veldx = T_tabel1.veldx

Een set waarden vergelijken met inhoud van een tabel
SELECT * FROM (VALUES (8279),(44287),(6289),(32969),(33010),(5509)) AS q (kolom)
WHERE kolom NOT IN (SELECT veldnaam_id from T_tabelnaam)

Case WHEN voorbeeld
SELECT 
CASE veld_id
  WHEN 12 THEN
    'Overheid'
ELSE
   'Bedrijf'
END,*
FROM T_money

Order distinct 1 specifieke kolom
SELECT  TOP 5 *
FROM    (SELECT dbo.tbl_forums.ForumID, dbo.tbl_messages.Date, dbo.tbl_forums.Forum,
                ROW_NUMBER() OVER (PARTITION BY dbo.tbl_forums.Forum ORDER BY dbo.tbl_messages.Date DESC) AS RowNumber
         FROM   dbo.tbl_messages INNER JOIN
                      dbo.tbl_forums ON dbo.tbl_messages.ForumID = dbo.tbl_forums.ForumID)
AS a
WHERE   a.RowNumber = 1
ORDER BY Date DESC

Als database restoren niet wil in MSSQL 2012
Bij het restoren van de database in MS SQL 2012: vinkje weghalen bij "Take tail-log backup before restore"

In view een order
Kan dmv een TOP 10000 toe te voegen, (geen TOP 100%)

Transaction log kan oplopen naar enkele gigabytes, hoe verklein je deze?
USE [Databasenaam]
GO
-- Eerst het database recovery model op SIMPLE zetten
ALTER DATABASE [Databasenaam]
SET RECOVERY SIMPLE;
GO
-- Verklein het truncated log file tot 1 MB.
DBCC SHRINKFILE ([DatabaseLogNaam], 1);
GO
-- Reset het database recovery model.
ALTER DATABASE [Databasenaam]
SET RECOVERY FULL;
GO

-- Zet de transactie log op een vaste grootte
USE [master]
GO
ALTER DATABASE [Databasenaam] MODIFY FILE ( NAME = N'[DatabaseLogNaam]', SIZE = 512000KB , FILEGROWTH = 0)
GO

Zoeken op velden en waarden in een database
SELECT 'T' AS type, t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name
FROM sys.tables AS t INNER
JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name = 'veld' UNION ALL SELECT 'V' AS type, t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name
FROM sys.views AS t INNER
JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name = 'veld'
ORDER BY schema_name, table_name

Naam "voornaam tussenvoegsel achternaam" omzetten in "achternaam, tussenvoegsel, voornaam"
parsename(replace(naam, ' ', '.'), 1) + ', ' + 
CASE LTRIM(replace(RTRIM(SUBSTRING(naam,CHARINDEX(' ',naam)+1, ( LEN(naam) - CHARINDEX(' ',naam)+1))),parsename(replace(naam, ' ', '.'), 1),''))
WHEN '' THEN ''
ELSE 
    RTRIM(LTRIM(replace(RTRIM(SUBSTRING(naam,CHARINDEX(' ',naam)+1, ( LEN(naam) - CHARINDEX(' ',naam)+1))),parsename(replace(naam, ' ', '.'), 1),''))) + ', '
END + 
SUBSTRING(naam, 1, CHARINDEX(' ', naam, 1) - 1) AS opAchternaam