В SQL Server можете да използвате T-SQL FORMAT()
функция за форматиране на датата и/или часа. Просто предоставете два аргумента; датата/часа и формата, който да използвате.
Форматът се предоставя като форматен низ. Низ за форматиране определя как трябва да бъде форматиран изходът.
FORMAT()
функцията също така приема незадължителен аргумент „култура“, който ви позволява да посочите език/локал, към който трябва да се придържат резултатите.
Основен пример
Ето основен пример за използване на FORMAT()
функция за форматиране на дата.
Необработена дата
Първо, ето как изглежда необработената дата. Ако изпълним следния оператор:
SELECT GETDATE();
Получаваме резултат, който изглежда по следния начин:
2018-05-03 02:36:54.480
Форматирана дата
Сега можем да използваме FORMAT()
функция за форматиране на тази дата и час в предпочитания от нас формат. Например, можем да направим това:
SELECT FORMAT( GETDATE(), 'D');
Което води до това:
Thursday, May 3, 2018
Това е само един от многото формати, които можем да изберем. Ето още едно:
SELECT FORMAT( GETDATE(), 'd');
Което води до това:
5/3/2018
Действителните резултати ще варират в зависимост от използваната култура. По подразбиране се използва езикът на текущата сесия, но можете също да замените това с трети аргумент („култура“).
Задаване на локал
Бихме могли да добавим трети аргумент („култура“) към горния код, за да определим локала, който да се използва за формата на датата.
Така че можем да направим това например:
SELECT FORMAT( GETDATE(), 'd', 'en-gb');
Което води до това:
5/3/2018
Ето още един пример:
SELECT FORMAT( GETDATE(), 'd', 'zh-cn');
Което води до това:
2018/5/3
Ако културата аргументът не е предоставен, използва се езикът на текущата сесия.
Ето как да намерите езика на текущата сесия и ето как да го настроите.
Имайте предвид, че текущият език обикновено ще бъде същият като езика по подразбиране на потребителя, но това може да не е така, ако потребителят е променил текущия език с помощта на SET LANGUAGE
. Във всеки случай можете също да разберете какъв е езикът по подразбиране.
Както може да си представите, можете да получите доста различни резултати в зависимост от текущия ви език или стойността на всеки аргумент за „култура“. Вижте как езиковите настройки могат да повлияят на вашите FORMAT() резултати за повече примери.
Извличане на месец/седмица/година
Можете да използвате FORMAT()
функция за връщане само на месечната част от датата, или седмицата, или годината, както е необходимо.
Имайте предвид, че те са чувствителни към главни букви. Например MMM
форматира месеца по различен начин от mmm
.
Месец
Примерен код за връщане на частта за месеца:
SELECT FORMAT( GETDATE(), 'MMM');
Резултат:
May
Година
Примерен код за връщане на частта за годината:
SELECT FORMAT( GETDATE(), 'yyyy');
Резултат:
2018
Ден
Примерен код за връщане на частта за деня:
SELECT FORMAT( GETDATE(), 'dddd');
Резултат:
Thursday
Извличане на времето
Можете също да използвате FORMAT()
функция за връщане на времето в определен формат.
Ето един пример:
SELECT FORMAT( GETDATE(), 'hh.mm');
Резултат:
03.37
Индикаторът AM/PM
Можете също да добавите tt
за да включите обозначението AM/PM:
SELECT FORMAT( GETDATE(), 'hh.mm tt');
Резултат:
03.37 AM
Комбиниране на форматни низове
Можете също да комбинирате тези форматни низове, за да предоставите свой собствен персонализиран формат на датата. Пример:
SELECT FORMAT( GETDATE(), 'hh.mm tt dddd, dd MMMM, yyyy');
Резултат:
03.41 AM Thursday, 03 May, 2018
Справка за спецификаторите на формата за дата и час
Следните статии съдържат всички спецификатори на формата за дата и час, които могат да се използват с FORMAT()
функция в SQL Server, заедно с примери за T-SQL:
- Стандартни низове за формат на дата и час
- Персонализирани низове за формат на дата и час
Това са същите спецификатори на формата за дата и час, които се поддържат от .NET Framework (FORMAT()
функцията разчита на .NET Framework).
Справка за спецификатори на числов формат
Следните статии съдържат всички спецификатори на цифров формат, които можете да използвате с FORMAT()
функция (т.е. за форматиране на числа):
- Стандартни низове в цифров формат
- Стрингове с персонализиран цифров формат
Това са същите спецификатори на цифров формат, които се поддържат от .NET Framework.
Други функции за дата
T-SQL включва и куп други функции, които ви помагат да извличате части от дати. Те включват функции като DAY()
, MONTH()
, YEAR()
, DATEPART()
и DATENAME()
.