sql >> Databáze >  >> RDS >> Sqlserver

Převod DateTime do formátu YYYY-MM-DD na SQL Server

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!


  1. T-SQL rozdělený řetězec na základě oddělovače

  2. SQL (ORACLE):ORDER BY a LIMIT

  3. Jak nainstalovat SQL Server na SUSE 12

  4. Pochopení uváznutí v MySQL a PostgreSQL