Базата данни на SQL Server може да съхранява различни типове данни, като числа, текстови низове, булеви стойности, дати и т.н. Въпреки това, съхраняването и обработката на такива данни има своите специфики. Настоящата статия ще се фокусира върху съхраняването на дати в таблица на база данни на SQL Server и преобразуването на различни типове дати във формат на SQL Server ГГГГ-ММ-ДД и обратно.
Да започваме!
ГГГГ-ММ-ДД – Форматът на датата в SQL Server
Форматът на данни на SQL Server ГГГГ-ММ-ДД предполага, че годината е маркиран с четири цифри, напр. 2021 г. месец е посочено следващо с 2 цифри, вариращи от 1-12 – например юни ще бъде 06. И накрая, денят от месеца се представя с 2 цифри, като 20. Така датата 6 юни 2021 г. , ще се съхранява като 2021-06-21. Това е форматът ГГГГ-ММ-ДД за дати в базите данни на SQL Server.
В SQL Server можете да използвате тип данни Date или DateTime, за да съхранявате дати. Разликата между типовете данни Date и DateTime се състои в нивото на детайлност, при което и двата типа данни съхраняват информацията за датата.
- Дата и час типът данни съхранява дата заедно свреме информация вчаса ,минути , исекунди .
- Дата типът данни ви позволява да съхранявате само дата информация без информация за времето.
Следващият пример демонстрира разликата между типовете данни Date и DateTime.
Първо, създаваме фиктивна Моята база данни база данни и една таблица (Пациент ) в него.
Пациентът таблицата има 5 колони:Id, Име, Пол, DOB (Дата на раждане) и DOD (Дата на смъртта). Типът на колоната DOB е Дата, докато колоната DOD има тип данни 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
)
Следният скрипт вмъква някои фиктивни записи в Пациент таблица:
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')
Забележете разликата между стойностите, вмъкнати в колоната DOB и колоната DOD. Колоната DOB има стойности във формат ГГГГ-ММ-ДД, но за колоната DOD предавате информацията ЧЧ:ММ:СС (часове:минути:секунди).
Нека сега да видим как нашият Пациент външен вид на масата. Изпълнете следния SQL скрипт, за да изберете всички записи от таблицата на пациентите:
SELECT * FROM Patient
Как да конвертирате DateTime във формат на дата ГГГГ-ММ-ДД в SQL Server
Често се нуждаем само от частта за дата от DateTime колона. Тъй като стойностите на датата се съхраняват в SQL Server във формат ГГГГ-ММ-ДД по подразбиране, извличането на частта от датата от типа данни DateTime връща датата в този формат .
Нека да разгледаме един пример. DOD колона в Пациент таблицата съхранява стойности в DateTime формат. Нека видим как да извлечем Дата част от колоната:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Както можете да видите от скрипта по-горе, за преобразуване на колоната тип DateTime в Date , можете да използвате CAST функция. Трябва да предадете името на колоната, последвано от AS изявление и ДАТА въведете в CAST функция.
Ето резултата от вашия скрипт:стойностите от колоната DOD се избират и преобразуват във формат ГГГГ-ММ-ДД.
Нека изберем и двете оригинални DOD стойности на колони и преобразувани DOD стойности, за да демонстрирате разликата между тях:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
И накрая, ако искате да изберете всички колони във вашата таблица и да прехвърлите само една колона (например да конвертирате колоната DOD в тип дата), можете да изпълните следния скрипт:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
В изхода можете да видите всички колони на таблицата заедно с колоната DOD_Date, съдържаща частта за дата от колоната DOD.
Как да конвертирате низ във формат на датата на SQL Server ГГГГ-ММ-ДД
Датите често се съхраняват в низови формати в колоните на таблицата на SQL Server. Можете да конвертирате стойностите на низовете във формата на датата на SQL Server ГГГГ-ММ-ДД.
Нека създадем още една колона в нашия Пациент маса. Името на колоната е Дата_на_пристигане (фиктивна колона, която показва датите на пристигане на пациентите), а типът на колоната е VARCHAR . Изпълнете следния скрипт, за да създадете тази колона:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Получавате новата Дата_на_пристигане колоната е добавена към Пациент колона. В момента Дата_на_пристигане колоната съдържа NULL стойности.
SELECT * FROM Patient
Нека сега добавим някои записи в Дата_на_пристигане колона. Следният скрипт вмъква низове в различни формати на дата в тази колона.
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
Сега нека видим как данните в Arriv_Date изглед на колона. Изпълнете скрипта по-долу:
SELECT * FROM Patient
За да конвертирате всички низове в Дата_на_пристигане колона във формата на датата на SQL Server ГГГГ-ММ-ДД , можете отново да използвате CAST функция. Трябва да посочите името на колоната, последвано от AS изявление и ДАТА тип.
Следният скрипт избира оригиналната Дата_на_пристигане колона и стойностите в нея, които се преобразуват във формат на дата.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
Резултатът показва стойности в различни формати за дата. Колоната с тип низ Date_Arriv се преобразува в ГГГГ-ММ-ДД формат на ARRIVAL_DATE колона:
Как да конвертирате формата на датата на SQL Server ГГГГ-ММ-ДД в други формати
Точно както можете да конвертирате други формати в ГГГГ-ММ-ДД, можете да направите обратното. За да конвертирате ГГГГ-ММ-ДД формат на дата към низове с различни формати на дата, можете да използвате функцията CONVERT.
Функцията CONVERT приема три параметъра:целевия тип, който е VARCHAR(50) в следния скрипт, оригиналната колона за дата и кода. Кодът определя как ще изглежда преобразуваната дата. Тук стойността на кода от 105 преобразува датата във формат ДД-ММ-ГГГГ.
Изпълнете скрипта, за да преобразувате датата от формата ГГГГ-ММ-ДД в ДД-ММ-ГГГГ:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Ето изхода:
Нека имаме още един пример. Стойността на кода 106 за преобразуваната дата преобразува датата от формат ГГГГ-ММ-ДД във формат ДД ПОН ГГГГ. Например в първата колона датата 1960-12-15 се преобразува в 12 декември 1960 г.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
По същия начин, стойността на кода от 6 преобразува дата във формат DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
И накрая, стойността на кода от 11 преобразува дата във формат ГГГГ/ММ/ДД:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
За да видите повече подробности за всички различни формати на дати и съответните кодове, вижте официалната документация на SQL Server.
Заключение
По този начин изяснихме както същността на формата на датата на SQL сървъра ГГГГ-ММ-ДД, така и конкретните случаи на преобразуване на датите в този формат и обратно.
Научихме се да използваме функцията CAST за преобразуване на различни типове данни, включително DateTime и низове във формат YYYY-MM-DD и функцията CONVERT, за да превърнем датите YYYY-MM-DD в други формати.
Освен това съвременните инструменти за специалистите на SQL Server правят работата по редактирането на датите много по-лесна. Например, многофункционалното dbForge Studio за SQL Server включва, наред с останалите опции, удобен редактор на визуални данни, който можете да използвате, когато работите с дати в SQL Server.
Надяваме се, че тази информация е била полезна за вас. Останете на линия!