Тази статия предоставя справка за персонализираните спецификатори на формата за дата и час, които могат да се използват при форматиране на дати и/или часове с помощта на 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 | +----------+-------+------+------+
Получаваме съвсем различен резултат.