Baza danych SQL Server może przechowywać różne typy danych, takie jak liczby, ciągi tekstowe, wartości logiczne, daty itp. Jednak przechowywanie i obsługa takich danych ma swoją specyfikę. Obecny artykuł skupi się na przechowywaniu dat w tabeli bazy danych SQL Server i konwertowaniu różnych typów dat na format SQL Server RRRR-MM-DD i odwrotnie.
Zacznijmy!
RRRR-MM-DD – format daty w SQL Server
Format danych SQL Server RRRR-MM-DD sugeruje, że rok jest oznaczony czterema cyframi, np. 2021. miesiąc jest podany jako 2 cyfry w zakresie od 1 do 12 – np. czerwiec byłby 06. Wreszcie dzień miesiąca jest przedstawiany jako 2 cyfry, np. 20. Tak więc data 06 czerwca 2021 , będzie przechowywany jako 2021-06-21. Jest to format RRRR-MM-DD dla dat w bazach danych SQL Server.
W programie SQL Server do przechowywania dat można użyć typu danych Date lub DateTime. Różnica między typami danych Date i DateTime polega na poziomie szczegółowości, na którym oba typy danych przechowują informacje o dacie.
- Data i godzina typ danych przechowuje datę razem z czasem informacje w godzinach , minuty i sekundy .
- Data typ danych pozwala tylko na przechowywanie daty informacje bez informacji o czasie.
Poniższy przykład ilustruje różnicę między typami danych Date i DateTime.
Najpierw tworzymy fikcyjną Moja baza danych baza danych i jedna tabela (Pacjent ) w nim.
Pacjent tabela ma 5 kolumn:Id, Imię, Płeć, DOB (data urodzenia) i DOD (data zgonu). Typ kolumny DOB to Data, podczas gdy kolumna DOD ma typ danych 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
)
Poniższy skrypt wstawia kilka fikcyjnych rekordów do pacjenta tabela:
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')
Zwróć uwagę na różnicę między wartościami wstawionymi do kolumny DOB i DOD. Kolumna DOB zawiera wartości w formacie RRRR-MM-DD, ale w przypadku kolumny DOD podajesz informacje GG:MM:SS (godziny:minuty:sekundy).
Zobaczmy teraz, jak nasz Pacjent wygląd tabeli. Wykonaj następujący skrypt SQL, aby wybrać wszystkie rekordy z tabeli Pacjent:
SELECT * FROM Patient
Jak przekonwertować datę i godzinę na format daty RRRR-MM-DD w SQL Server
Często potrzebujemy tylko część daty z DateTime kolumna. Ponieważ wartości dat są domyślnie przechowywane w SQL Server w formacie RRRR-MM-DD, wyodrębnienie części daty z typu danych DateTime zwraca datę w tym formacie .
Spójrzmy na przykład. DOD kolumna w kolumnie Pacjent tabela przechowuje wartości w DateTime format. Zobaczmy, jak wyodrębnić Datę część z kolumny:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Jak widać w powyższym skrypcie, przekonwertować kolumnę typu DateTime na Date , możesz użyć CAST funkcjonować. Musisz podać nazwę kolumny, po której następuje AS oświadczenie i DATE wpisz do CAST funkcja.
Oto wynik twojego skryptu:wartości z kolumny DOD są wybierane i konwertowane na format RRRR-MM-DD.
Wybierzmy zarówno oryginalny DOD wartości kolumn i przekonwertowane DOD wartości, aby pokazać różnicę między nimi:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Na koniec, jeśli chcesz zaznaczyć wszystkie kolumny w tabeli i rzutować tylko jedną kolumnę (np. przekonwertować kolumnę DOD na typ Date), możesz uruchomić następujący skrypt:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
W danych wyjściowych możesz zobaczyć wszystkie kolumny tabeli wraz z kolumną DOD_Date zawierającą część Date z kolumny DOD.
Jak przekonwertować ciąg znaków na format daty SQL Server RRRR-MM-DD
Daty są często przechowywane w postaci ciągów w kolumnach tabeli programu SQL Server. Możesz przekonwertować wartości ciągu do formatu daty SQL Server RRRR-MM-DD.
Utwórzmy kolejną kolumnę w naszym Pacjentu stół. Nazwa kolumny to Data przybycia (fikcyjna kolumna, która pokazuje daty przybycia pacjentów), a typ kolumny to VARCHAR . Wykonaj następujący skrypt, aby utworzyć tę kolumnę:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Otrzymujesz nową Data przyjazdu kolumna dodana do pacjenta kolumna. W tej chwili Data przyjazdu kolumna zawiera NULL wartości.
SELECT * FROM Patient
Dodajmy teraz kilka rekordów do Data przybycia kolumna. Poniższy skrypt wstawia do tej kolumny ciągi w różnych formatach daty.
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
Zobaczmy teraz, jak dane w Arriv_Date kolumna wygląda. Wykonaj poniższy skrypt:
SELECT * FROM Patient
Aby przekonwertować wszystkie ciągi w arriv_Date kolumna do formatu daty SQL Server RRRR-MM-DD , możesz ponownie użyć CAST funkcjonować. Musisz podać nazwę kolumny, po której następuje AS oświadczenie i DATE typ.
Poniższy skrypt wybiera oryginalną datę przybycia kolumna i zawarte w niej wartości, które są konwertowane na format daty.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
Dane wyjściowe pokazują wartości w różnych formatach daty. Kolumna typu ciągu Arriv_Date zostanie przekonwertowany na RRRR-MM-DD w formacie DATA_ PRZYJAZDU kolumna:
Jak przekonwertować format daty programu SQL Server RRRR-MM-DD na inne formaty
Tak jak możesz przekonwertować inne formaty na RRRR-MM-DD, możesz zrobić odwrotnie. Aby przekonwertować RRRR-MM-DD format daty na ciągi z różnymi formatami daty, możesz użyć funkcji KONWERSJA.
Funkcja CONVERT akceptuje trzy parametry:typ docelowy, którym w poniższym skrypcie jest VARCHAR(50), oryginalna kolumna daty i kod. Kod definiuje, jak będzie wyglądać przekonwertowana data. Tutaj wartość kodu 105 konwertuje datę na format DD-MM-RRRR.
Uruchom skrypt, aby przekonwertować datę z formatu RRRR-MM-DD na DD-MM-RRRR:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Oto wynik:
Miejmy inny przykład. Wartość kodu 106 dla przekonwertowanej daty konwertuje datę z formatu RRRR-MM-DD na format DD MON RRRR. Na przykład w pierwszej kolumnie data 1960-12-15 jest konwertowana na 12 grudnia 1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
Podobnie, wartość kodu 6 konwertuje datę na format DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
I na koniec wartość kodu 11 konwertuje datę na format RRRR/MM/DD:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
Aby zobaczyć więcej szczegółów na temat wszystkich różnych formatów dat i odpowiadających im kodów, zapoznaj się z oficjalną dokumentacją SQL Server.
Wniosek
W ten sposób wyjaśniliśmy zarówno istotę formatu daty serwera SQL RRRR-MM-DD, jak i konkretne przypadki konwersji dat na ten format i odwrotnie.
Nauczyliśmy się używać funkcji CAST do konwertowania różnych typów danych, w tym DateTime i ciągów do formatu RRRR-MM-DD, oraz funkcji CONVERT do przekształcania dat RRRR-MM-DD na inne formaty.
Poza tym nowoczesne narzędzia dla specjalistów SQL Server znacznie ułatwiają pracę związaną z edycją dat. Na przykład, wielofunkcyjny dbForge Studio dla SQL Server zawiera, wśród pozostałych opcji, poręczny wizualny edytor danych, którego można używać podczas pracy z datami w SQL Server.
Mam nadzieję, że te informacje były dla Ciebie przydatne. Czekać na dalsze informacje!