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

Персонализирани низове за формат на дата/час, поддържани от FORMAT() в SQL Server

Тази статия предоставя справка за персонализираните спецификатори на формата за дата и час, които могат да се използват при форматиране на дати и/или часове с помощта на FORMAT() функция в SQL Server, заедно с примери.

Можете да комбинирате всеки от тези спецификатори на формат, за да създадете персонализиран форматен низ. Вижте по-долу пример за код и обяснение как работят низовете за персонализиран формат.

Примерите в таблицата предполагат отместване на датата и времето стойност на 2080-05-01 23:09:08.1234567 +07:00 .

Форматиране на низ Описание Пример
d Денят от месеца, от 1 до 31. 1
dd Денят от месеца, от 01 до 31. 01
ddd Съкратеното име на деня от седмицата. ср
dddd Пълното име на деня от седмицата. сряда
f Десетите от секундата в стойност за дата и час. 1
ff Стотните от секундата в стойност за дата и час. 12
fff Милисекундите в стойност за дата и час. 123
ffff Десетте хилядна от секундата в стойност за дата и час. 1234
fffff Стохилядната от секундата в стойност за дата и час. 12345
ffffff Милионните от секундата в стойност за дата и час. 123456
fffffff Десет милионни от секундата в стойност за дата и час. 1234567
F Ако не е нула, десетите от секундата в стойността за дата и час. 1
FF Ако не е нула, стотните от секундата в стойността за дата и час. 12
FFF Ако не е нула, милисекундите в стойността за дата и час. 123
FFFF Ако не е нула, десетте хилядна от секундата в стойността за дата и час. 1234
FFFFF Ако не е нула, стохилядната от секундата в стойността на дата и час. 12345
FFFFFFF Ако не е нула, милионните от секундата в стойността за дата и час. 123456
FFFFFFF Ако не е нула, десетте милионни от секундата в стойността за дата и час. 1234567
g Периодът или ерата. A.D.
gg Периодът или ерата. A.D.
h Часът, като се използва 12-часов часовник от 1 до 12. 11
hh Часът, като се използва 12-часов часовник от 01 до 12. 11
H Часът, като се използва 24-часов часовник от 0 до 23. 23
HH Часът, като се използва 24-часов часовник от 00 до 23. 23
K Информация за часовата зона. +07:00
m Минутата, от 0 до 59. 9
mm Минутата, от 00 до 59. 09
M Месецът от 1 до 12. 5
MM Месецът, от 01 до 12. 05
MMM Съкратеното име на месеца. май
MMMM Пълното име на месеца. май
s Вторият, от 0 до 59. 8
ss Вторият, от 00 до 59. 08
t Първият знак на обозначението AM/PM. P
tt Означител AM/PM. PM
y Годината, от 0 до 99. 80
yy Годината, от 00 до 99. 80
yyy Година, с минимум три цифри. 2080
yyyy Година като четирицифрено число. 2080
yyyyy Година като петцифрено число. 02080
z Часове, изместени от UTC, без водещи нули. +7
zz Часове, изместени спрямо UTC, с водеща нула за едноцифрена стойност. +07
zzz Часове и минути с изместване спрямо UTC. +07:00
: Разделител за време. :
/ Разделителят за дата. /
"string" Литерален разделител на низове. низ
% Дефинира следния символ като спецификатор на персонализиран формат.
\ Ескпиращият символ.

Всеки друг знак се копира в резултантния низ без промяна.

Важно: Когато използвате низ за персонализиран формат от един знак, трябва да го поставите преди знака за процент (% ). Като алтернатива можете да добавите интервал. Ако не направите това, или ще получите NULL, или спецификаторът на формата може да се интерпретира като стандартен спецификатор на формат и ще получите непредвидени резултати.

Какво представляват низовете с персонализиран формат?

Низът за персонализиран формат се състои от един или повече спецификатори на персонализиран формат. Таблицата по-горе изброява спецификаторите на персонализиран формат, налични за форматиране на стойности за дата и час в низ.

Има и стандартни низове за формат на дата и час. Всеки от тях е псевдоним за низ за персонализиран формат. Низовете за стандартен формат се състоят от един спецификатор на формат, така че са по-бързи за използване (но по-малко гъвкави от низовете за персонализиран формат).

Всеки форматен низ, който не е стандартен низ за формат на дата и час, се интерпретира като персонализиран низ за формат на дата и час.

Пример за употреба

Начинът, по който работят спецификаторите на персонализиран формат, е, че можете да ги комбинирате заедно, за да образувате низ за персонализиран формат, когато използвате FORMAT() функция. Това определя как се форматира резултатът.

Ето няколко примера:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd, MMM yy') AS 'd, MMM yy',
  FORMAT(@date, 'dd, MMMM yyyy') AS 'dd, MMMM yyyy',
  FORMAT(@date, 'dddd, MMM dd yyyy') AS 'dddd, MMM dd yyyy',
  FORMAT(@date, 'hh:mm:ss') AS 'hh:mm:ss',
  FORMAT(@date, 'hh:mm tt') AS 'hh:mm tt';

Резултат:

+-------------+-----------------+------------------------+------------+------------+
| d, MMM yy   | dd, MMMM yyyy   | dddd, MMM dd yyyy      | hh:mm:ss   | hh:mm tt   |
|-------------+-----------------+------------------------+------------+------------|
| 1, May 80   | 01, May 2080    | Wednesday, May 01 2080 | 11:09:08   | 11:09 PM   |
+-------------+-----------------+------------------------+------------+------------+

Така че дава възможност за голяма гъвкавост при представянето на вашите дати и часове.

Ето пример за използване на низ за формат, състоящ се от един спецификатор на формат.

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, '%d') AS '%d',
  FORMAT(@date, '%M') AS '%M',
  FORMAT(@date, '%K') AS '%K',
  FORMAT(@date, '%z') AS '%z';

Резултат:

+------+------+--------+------+
| %d   | %M   | %K     | %z   |
|------+------+--------+------|
| 1    | 5    | +07:00 | +7   |
+------+------+--------+------+

Както споменахме, трябва да ги добавите със знак за процент, за да избегнете получаването на NULL и така че спецификаторът на формата да не се интерпретира по невнимание като низ за стандартен формат.

Ето какво се случва, ако премахна знака за процент от предишния пример:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd') AS 'd',
  FORMAT(@date, 'M') AS 'M',
  FORMAT(@date, 'K') AS 'K',
  FORMAT(@date, 'z') AS 'z';

Резултат:

+----------+-------+------+------+
| d        | M     | K    | z    |
|----------+-------+------+------|
| 5/1/2080 | May 1 | NULL | NULL |
+----------+-------+------+------+

Получаваме съвсем различен резултат.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мигриране на база данни на Microsoft Access към SQL Server

  2. Как да намеря директорията с данни за екземпляр на SQL Server?

  3. Най-добрият начин за съхраняване на време (hh:mm) в база данни

  4. Системни бази данни на SQL Server – Поддръжка на MSDB

  5. Анализ на MS SQL Server за тези, които го виждат за първи път