Databáze SQL Server může ukládat různé typy dat, jako jsou čísla, textové řetězce, booleovské hodnoty, data atd. Ukládání a manipulace s takovými daty má však svá specifika. Aktuální článek se zaměří na ukládání dat do databázové tabulky SQL Server a převod různých typů dat do formátu SQL Server RRRR-MM-DD a naopak.
Začínáme!
RRRR-MM-DD – formát data na serveru SQL
Formát dat SQL Server YYYY-MM-DD naznačuje, že rok je označeno čtyřmi číslicemi, např. 2021. měsíc je dále specifikováno 2 číslicemi v rozmezí 1-12 – např. červen bude 06. Nakonec den v měsíci je uváděno 2 číslicemi, například 20. Tedy datum 6. června 2021 , bude uložena jako 2021-06-21. Je to formát RRRR-MM-DD pro data v databázích SQL Server.
Na serveru SQL Server můžete k ukládání dat použít datový typ Date nebo DateTime. Rozdíl mezi datovými typy Date a DateTime spočívá v úrovni podrobnosti, ve které oba datové typy ukládají informace o datu.
- Datum a čas datový typ ukládá datum společně s časem informace v hodinách , minuty a sekund .
- Datum datový typ umožňuje uložit pouze datum informace bez časové informace.
Následující příklad ukazuje rozdíl mezi datovými typy Date a DateTime.
Nejprve vytváříme figurínu Moje databáze databáze a jedna tabulka (Pacient ) v něm.
Pacient tabulka má 5 sloupců:ID, Jméno, Pohlaví, DOB (Datum narození) a DOD (Datum úmrtí). Typ sloupce DOB je Datum, zatímco sloupec DOD má datový typ DateTime.
CREATE DATABASE MyDatabase
USE MyDatabase
CREATE TABLE Patient
(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)
Následující skript vloží některé fiktivní záznamy do Pacienta tabulka:
INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')
Všimněte si rozdílu mezi hodnotami vloženými do sloupce DOB a DOD. Sloupec DOB obsahuje hodnoty ve formátu YYYY-MM-DD, ale pro sloupec DOD předáváte informace HH:MM:SS (hodiny:minuty:sekundy).
Nyní se podívejme, jak náš pacient tabulka vypadá. Chcete-li vybrat všechny záznamy z tabulky pacientů, spusťte následující skript SQL:
SELECT * FROM Patient
Jak převést datum a čas na formát data RRRR-MM-DD na serveru SQL
Často potřebujeme pouze část data od Datum a čas sloupec. Vzhledem k tomu, že hodnoty data jsou ve výchozím nastavení uloženy na serveru SQL ve formátu RRRR-MM-DD, extrakce části data z datového typu DateTime vrátí datum v tomto formátu .
Podívejme se na příklad. DOD ve sloupci Pacient tabulka ukládá hodnoty do Datum a čas formát. Podívejme se, jak extrahovat Datum část ze sloupce:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Jak můžete vidět z výše uvedeného skriptu, převést sloupec typu DateTime na Datum , můžete použít CAST funkce. Musíte zadat název sloupce a za ním AS výpis a DATUM zadejte do CAST funkce.
Zde je výsledek vašeho skriptu:hodnoty ze sloupce DOD jsou vybrány a převedeny do formátu RRRR-MM-DD.
Vyberme obě původní DOD hodnoty sloupce a převedené DOD hodnoty, které demonstrují rozdíl mezi nimi:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Nakonec, pokud chcete vybrat všechny sloupce v tabulce a přenést pouze jeden sloupec (např. převést sloupec DOD na typ Datum), můžete spustit následující skript:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
Ve výstupu můžete vidět všechny sloupce tabulky spolu se sloupcem DOD_Date obsahujícím část Datum ze sloupce DOD.
Jak převést řetězec na formát data serveru SQL RRRR-MM-DD
Data jsou často uložena ve formátech řetězců ve sloupcích tabulky SQL Server. Hodnoty řetězce můžete převést na formát data serveru SQL Server RRRR-MM-DD.
Vytvořme další sloupec v našem Pacient stůl. Název sloupce je Arriv_Date (fiktivní sloupec, který zobrazuje data příjezdu pacientů) a typ sloupce je VARCHAR . Chcete-li vytvořit tento sloupec, spusťte následující skript:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Obdržíte nové Arriv_Date sloupec přidán do Pacient sloupec. V tuto chvíli je Datum_příjezdu sloupec obsahuje NULL hodnoty.
SELECT * FROM Patient
Nyní přidáme několik záznamů do Arriv_Date sloupec. Následující skript vloží do tohoto sloupce řetězce v různých formátech data.
UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10
Nyní se podívejme, jak jsou data v Arriv_Date sloup vypadá. Spusťte níže uvedený skript:
SELECT * FROM Patient
Chcete-li převést všechny řetězce v Arriv_Date sloupec na formát data serveru SQL Server RRRR-MM-DD , můžete opět použít CAST funkce. Musíte zadat název sloupce a za ním AS výpis a DATUM typ.
Následující skript vybere původní Arriv_Date sloupec a hodnoty v něm, které jsou převedeny do formátu data.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
Výstup zobrazuje hodnoty v různých formátech data. Sloupec typu řetězce Arriv_Date se převede na RRRR-MM-DD formátu v ARRIVAL_DATE sloupec:
Jak převést formát data serveru SQL RRRR-MM-DD na jiné formáty
Stejně jako můžete převést jiné formáty na YYYY-MM-DD, můžete to udělat obráceně. Chcete-li převést RRRR-MM-DD formát data na řetězce s různými formáty data, můžete použít funkci CONVERT.
Funkce CONVERT přijímá tři parametry:cílový typ, kterým je v následujícím skriptu VARCHAR(50), původní sloupec data a kód. Kód definuje, jak bude převedené datum vypadat. Zde hodnota kódu 105 převede datum do formátu DD-MM-RRRR.
Spusťte skript pro převod data z formátu RRRR-MM-DD na DD-MM-RRRR:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Zde je výstup:
Podívejme se na další příklad. Hodnota kódu 106 pro převedené datum převede datum z formátu RRRR-MM-DD na formát DD MON YYYY. Například v prvním sloupci je datum 1960-12-15 převedeno na 12. prosince 1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
Podobně hodnota kódu 6 převede datum do formátu DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
A nakonec hodnota kódu 11 převede datum do formátu RRRR/MM/DD:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
Další podrobnosti o všech různých formátech data a odpovídajících kódech naleznete v oficiální dokumentaci k SQL Serveru.
Závěr
Tímto způsobem jsme objasnili podstatu formátu data serveru SQL RRRR-MM-DD a konkrétní případy převodu dat do tohoto formátu a naopak.
Naučili jsme se používat funkci CAST k převodu různých datových typů včetně DateTime a řetězců do formátu RRRR-MM-DD a funkci CONVERT k převodu dat RRRR-MM-DD na jiné formáty.
Kromě toho moderní nástroje pro specialisty na SQL Server značně zjednodušují práci s úpravami dat. Například dbForge Studio pro SQL Server s mnoha funkcemi obsahuje kromě ostatních možností praktický editor vizuálních dat, který můžete použít při práci s daty na serveru SQL.
Doufám, že tyto informace byly pro vás užitečné. Zůstaňte naladěni!