SQLShack

Inleiding

Een gemeenschappelijke taak voor newbies is om te leren hoe je een SQL te doen datum converteren en werken om ze datum om te zetten in andere datatypen of andere datatypen om te zetten in Date.

Hier in dit artikel zullen we uitleggen hoe om te werken en data converteren naar verschillende formaten of vice versa.

Eisen

  1. SQL Server geïnstalleerd. Beginnend in SQL Server 2008

Voorbeeld

Het eerste voorbeeld zal eenvoudig zijn, we hebben een varchar kolom met een datum in een tabel, maar we moeten de varchar naar datum converteren. We moeten een SQL conversie datum doen.

Hier is het script om de tabel te maken met data:

1
2
3
4
5
6
7
8
9
10
11
12

TABEL MAKEN .(
NOT NULL,
(100) NULL,
CONSTRAINT PRIMARY KEY CLUSTERED
(
ASC
)MET (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) OP
) OP
GO
INSERT . (, ) WAARDEN (1, N’02-03-2005′)
INSERT . (, ) WAARDEN (2, N’03-05-2006′)
INSERT . (, ) VALUES (3, N’04-05-2011′)

We willen de kolom datum omzetten van nvarchar(100) naar een datum.

Om dit te doen, gaan we proberen om het ontwerp van de tabel aan te passen:

We gaan proberen om het Gegevenstype te wijzigen in smalldatetime:

U krijgt de volgende foutmelding:

Het opslaan van wijzigingen is niet toegestaan. De wijzigingen die u hebt aangebracht, vereisen dat de volgende tabellen worden verwijderd en opnieuw worden aangemaakt. U hebt wijzigingen aangebracht in een tabel die niet opnieuw kan worden gemaakt of u hebt de optie Prevent saving changes that require the table to be re-created ingeschakeld.

Om deze fout op te lossen, gaat u in SSMS naar Tools > Options menu:

Ga in Options naar Designers >Table and Database Designers en verwijder het vinkje bij Prevent saving changes that require table re-creation:

Met deze optie schakelt u de optie uit om te voorkomen dat wijzigingen worden opgeslagen waarvoor een tabel opnieuw moet worden gemaakt. Wanneer u het kolomdatatype wijzigt, moet de tabel opnieuw worden gemaakt.

Nu kunt u het ontwerp opslaan en uw tabel wordt geconverteerd naar datum en de SQL-conversiedatum is voltooid:

Conversiefuncties

T-SQL bevat functies om datatypes te converteren. We zullen CAST en CONVERT gebruiken om een SQL-dataconversie uit te voeren.

Laten we eerst beginnen met CAST:

Hoe te converteren van varchar, nvarchar, char, nchar naar sql datum met behulp van CAST

Het volgende voorbeeld, zal laten zien hoe je tekens te converteren naar een datetime datum type met behulp van de CAST-functie:

1
2

declareer @vardate varchar(100)=’03-04-2016′
select CAST(@vardate AS datetime) AS dataconverted;

In het voorbeeld wordt een variabele met de naam vardate gedeclareerd en vervolgens wordt deze variabele, die een varchar is, met behulp van de CAST-functie geconverteerd naar datetime.

Note: Voor meer informatie over de CAST-functie, zie deze link: CAST en CONVERT (Transact-SQL)

Hoe doe je een SQL datum converteren van varchar, nvarchar, char, nchar naar datum met behulp van CONVERT

CONVERT is een functie die hetzelfde kan doen dan CAST in het vorige scenario.

1
2

declareer @vardate varchar(100)=’03-04-2016′
selecteer CONVERT(datetime, @vardate) as dataconverted

De T-SQL code doet hetzelfde als cast, maar maakt gebruik van de CONVERT functie. Het voordeel van CONVERT is dat je het formaat van de datum gemakkelijk kunt wijzigen met behulp van het stijlargument.

Als u bijvoorbeeld de datum in het ISO-formaat wilt, kunt u de volgende T-SQL zin gebruiken:

1
select CONVERT(nvarchar(30),getdate(), 121) as isoformat

Hoe sql-datum omzetten in verschillende formaten in T-SQL

Het volgende voorbeeld laat zien hoe het datumformaat in verschillende formaten kan worden omgezet.

Voor Japans formaat:

1
select CONVERT(nvarchar(30),getdate(), 111) as Japanformat

Voor VS formaat:

1
select CONVERT(nvarchar(30),getdate(), 110) as USAformat

Voor ANSI-formaat:

1
select CONVERT(nvarchar(30),getdate(), 102) as ANSIformat

Voor Brits formaat:

1
select CONVERT(nvarchar(30),getdate(), 103) as Britishformat

Voor Duits formaat:

1
select CONVERT(nvarchar(30),getdate(), 104) as Germanformat

Voor het Italiaanse formaat:

1
select CONVERT(nvarchar(30),getdate(), 105) as Italianformat

Voor het Europese standaardformaat:

1
select CONVERT(nvarchar(30),getdate(), 113) as EuropeDefaultformat

Voor ODBC Canonical:

1
select CONVERT(nvarchar(30),getdate(), 120) als ODBCCanonicalformat

U hebt altijd de mogelijkheid om de functie FORMAT te gebruiken om de datum te krijgen in het formaat dat u wilt:

1
SELECT FORMAT( getdate(), ‘dd/MM/yy’)

FORMAT is eenvoudiger om met datums om te gaan en het formaat van uw voorkeur te gebruiken, omdat u de stijl niet hoeft te kennen. In mijn ervaring zie ik echter veel code die de CAST- en CONVERT-functies gebruikt, dus het is beter om ze te kennen.

Note: Voor meer informatie over de FORMAT-functie, raadpleeg deze link: FORMAT (Transact-SQL)

Problemen met betrekking tot SQL converteer datum operaties

Wanneer u probeert te converteren naar datum is dit niet altijd mogelijk. Het volgende voorbeeld toont een veel voorkomende fout:

1
2

declareer @vardate varchar(100)=’11242016′
select CONVERT(datetime, @vardate) as dataconverted

De foutmelding is de volgende:

Msg 242, Level 16, State 3, Line 22

De conversie van een varchar gegevenstype naar een datetime gegevenstype resulteerde in een waarde die buiten het bereik valt.

U heeft scheidingstekens nodig voor de datum zoals een “/”, een “.” of een “-“.

Het volgende voorbeeld, wijzigt de string van 11242016 naar 11-24-2016 en converteert dan naar sql datum:

1
2
3
4
5

declareer @vardate varchar(100)=’11242016′
set @vardate= SUBSTRING(@vardate, 1, 2)+’-‘+ SUBSTRING(@vardate, 3, 2)+’-‘+SUBSTRING(@vardate, 5, 4)
select CONVERT(date, @vardate) as dataconverted

We gebruiken substring om de “-” aan elkaar te plakken om een acceptabel datumformaat te gebruiken en vervolgens gebruiken we de CONVERT functie om de karakters om te zetten naar sql-datum.

Datum datatypes

In SQL Server zijn er verschillende datatypes:

  • Time geeft de uren, minuten, seconden en nanoseconden (hh:mm:ss.nnnnnn)
  • Date geeft het jaar, de maanden en de dagen (yyyy-mm-dd)
  • Datetime geeft gegevens met dit formaat: JJJJ-MM-DD uu:mm:ss
  • Smalldatetime geeft datums weer met deze notatie: YYYY-MM-DD hh:mm:ss
  • Datetime2 is vergelijkbaar met Datetime, maar het heeft meer precisie (YYYY-MM-DD hh:mm:ss)
  • Datetimeoffset heeft de precisie van datetime2, maar het wordt gebruikt voor tijdzones in UTC

SQL datum converteren naar geheel getal

Als u de CONVERT of CAST gebruikt om een datetime naar geheel getal te converteren, krijgt u het aantal dagen sinds 1900 tot de opgegeven datum.

Bijvoorbeeld, de volgende T-SQL code toont het aantal dagen vanaf 1900 tot vandaag:

1
SELECT CONVERT(INT, GETDATE())

U kunt ook het jaar, de maanden, de dagen, enz. van een datetime-waarde converteren naar een geheel getal. De volgende code laat zien hoe u de dag, de maand en het jaar van een datetime waarde in gehele variabelen kunt opslaan:

1
2
3
4
5

declareer @year int = year(getdate())
declareren @maand int = maand(getdate())
verklaren @day int = day(getdate())
select @year as year,@month as month,@day as day

Algemene vragen over SQL converteren datum in SQL Server

Note: De volgende link bevat FAQ over functies en data in SQL Server: FAQ over datums in SQL Server

Conclusies

In dit artikel hebben we geleerd hoe we een SQL conversie datum in SQL Server kunnen uitvoeren. We hebben geleerd hoe we het datatype in een tabel kunnen wijzigen, hoe we de CAST, CONVERT en FORMAT functies kunnen gebruiken. We hebben ook geleerd over de verschillende soorten SQL datatypes.

  • Auteur
  • Recent Posts
Daniel Calbimonte is een Microsoft Most Valuable Professional, Microsoft Certified Trainer en Microsoft Certified IT Professional voor SQL Server. Hij is een volleerd SSIS auteur, docent aan IT Academies en heeft meer dan 13 jaar ervaring in het werken met verschillende databases.
Hij heeft gewerkt voor de overheid, oliemaatschappijen, websites, tijdschriften en universiteiten over de hele wereld. Daniel spreekt ook regelmatig op SQL Servers conferenties en blogs. Hij schrijft SQL Server-trainingsmateriaal voor certificeringsexamens.
Hij helpt ook met het vertalen van SQLShack artikelen naar het Spaans
Bekijk alle berichten van Daniel Calbimonte

Laatste berichten van Daniel Calbimonte (zie alle)
  • SQL interview vragen – 3 september, 2020
  • SQL-certificeringen – 7 augustus 2020
  • TSQL-geschiedenis – 3 september 2019

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.