Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преобразуване на DateTime във формат YYYY-MM-DD в SQL Server

Базата данни на 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.

Надяваме се, че тази информация е била полезна за вас. Останете на линия!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL транспониране на пълната таблица

  2. Как да използвате логически оператор EXISTS в SQL Server - SQL Server / TSQL урок, част 125

  3. Изберете изявление, за да върнете родител и безкрайни деца

  4. Грешка 'datetime2' при използване на структура на обект в VS 2010 .net 4.0

  5. Как да върна няколко стойности в една колона (T-SQL)?