Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwersja DateTime do formatu RRRR-MM-DD w SQL Server

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!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolejkowanie w komunikatach OneWay WCF przy użyciu usługi Windows i programu SQL Server

  2. Czy mogę uzyskać nazwy wszystkich tabel bazy danych SQL Server w aplikacji C#?

  3. Składnia pętli for w SQL Server

  4. Jak utworzyć unikatowe ograniczenie, które również dopuszcza wartości null?

  5. Scal nakładające się interwały dat