Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Niestandardowe ciągi formatu daty/godziny obsługiwane przez FORMAT() w SQL Server

Ten artykuł zawiera odniesienie do niestandardowych specyfikatorów formatu daty i godziny, których można używać podczas formatowania dat i/lub godzin za pomocą FORMAT() funkcji w SQL Server, wraz z przykładami.

Możesz połączyć dowolne z tych specyfikatorów formatu, aby utworzyć dostosowany ciąg formatu. Zobacz poniżej przykład kodu i wyjaśnienie, jak działają niestandardowe ciągi formatu.

Przykłady w tabeli zakładają przesunięcie daty i godziny wartość 2080-05-01 23:09:08.1234567 +07:00 .

ciąg formatu Opis Przykład
d Dzień miesiąca, od 1 do 31. 1
dd Dzień miesiąca, od 01 do 31. 01
ddd Skrócona nazwa dnia tygodnia. Środa
dddd Pełna nazwa dnia tygodnia. środa
f Ułamki dziesiąte sekundy w wartości daty i godziny. 1
ff Sekundy setne sekundy w wartości daty i godziny. 12
fff Milisekundy w wartości daty i godziny. 123
ffff Dziesięć tysięcznych sekundy w wartości daty i godziny. 1234
fffff Stoty tysięczne sekundy w wartości daty i godziny. 12345
fffff Milionowe części sekundy w wartości daty i godziny. 123456
fffffff Dziesięć milionowych części sekundy w wartości daty i godziny. 1234567
F Jeśli niezerowe, dziesiąte części sekundy w wartości daty i czasu. 1
FF Jeśli niezerowe, setne części sekundy w wartości daty i godziny. 12
FFF Jeśli niezerowe, milisekundy w wartości daty i czasu. 123
FFFF Jeśli niezerowe, dziesięć tysięcznych sekundy w wartości daty i godziny. 1234
FFFFF Jeśli niezerowe, setne tysięczne sekundy w wartości daty i godziny. 12345
FFFFFF Jeśli niezerowe, milionowe części sekundy w wartości daty i godziny. 123456
FFFFFFF Jeśli niezerowe, dziesięć milionowych części sekundy w wartości daty i godziny. 1234567
g Okres lub era. AD
gg Okres lub era. AD
h Godzina przy użyciu zegara 12-godzinnego od 1 do 12. 11
hh Godzina, przy użyciu zegara 12-godzinnego od 01 do 12. 11
H Godzina przy użyciu zegara 24-godzinnego od 0 do 23. 23
HH Godzina przy użyciu 24-godzinnego zegara od 00 do 23. 23
K Informacje o strefie czasowej. +07:00
m Minuta, od 0 do 59. 9
mm Minuta, od 00 do 59. 09
M Miesiąc, od 1 do 12. 5
MM Miesiąc, od 01 do 12. 05
MMM Skrócona nazwa miesiąca. maj
MMMM Pełna nazwa miesiąca. maj
s Drugi, od 0 do 59. 8
ss Drugi, od 00 do 59. 08
t Pierwszy znak oznaczenia AM/PM. P
tt Oznacznik AM/PM. PM
y Rok, od 0 do 99. 80
yy Rok, od 00 do 99. 80
yyy Rok z minimum trzema cyframi. 2080
yyy Rok jako liczba czterocyfrowa. 2080
yyy Rok jako liczba pięciocyfrowa. 02080
z Przesunięcie godzin względem UTC, bez zer wiodących. +7
zz Przesunięcie godzin względem UTC, z wiodącym zerem dla wartości jednocyfrowej. +07
zzz Godziny i minuty przesunięte względem UTC. +07:00
: Separator czasu. :
/ Separator daty. /
"string" Dosłowny ogranicznik ciągu. ciąg
% Definiuje następujący znak jako specyfikator formatu niestandardowego.
\ Znak ucieczki.

Każdy inny znak jest kopiowany do ciągu wynikowego bez zmian.

Ważne: Używając jednoznakowego ciągu formatu niestandardowego, należy poprzedzić go znakiem procentu (% ). Alternatywnie możesz dodać spację. Jeśli tego nie zrobisz, otrzymasz albo NULL, albo specyfikator formatu może być zinterpretowany jako specyfikator formatu standardowego i otrzymasz niezamierzone wyniki.

Co to są niestandardowe ciągi formatujące?

Ciąg formatu niestandardowego składa się z co najmniej jednego specyfikatora formatu niestandardowego. W powyższej tabeli wymieniono specyfikatory formatu niestandardowego dostępne do formatowania wartości daty i godziny w ciągu.

Istnieją również standardowe ciągi formatu daty i godziny. Każdy z nich jest aliasem niestandardowego ciągu formatu. Standardowe ciągi formatujące składają się z jednego specyfikatora formatu, więc są szybsze w użyciu (ale mniej elastyczne niż niestandardowe ciągi formatujące).

Każdy ciąg formatu, który nie jest standardowym ciągiem formatu daty i godziny, jest interpretowany jako niestandardowy ciąg formatu daty i godziny.

Przykład użycia

Sposób, w jaki działają specyfikatory formatu niestandardowego, polega na tym, że można je połączyć, aby utworzyć ciąg formatu niestandardowego podczas korzystania z FORMAT() funkcjonować. To określa sposób formatowania wyniku.

Oto kilka przykładów:

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';

Wynik:

+-------------+-----------------+------------------------+------------+------------+
| 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   |
+-------------+-----------------+------------------------+------------+------------+

Pozwala więc na dużą elastyczność w prezentowaniu dat i godzin.

Oto przykład użycia ciągu formatu zawierającego pojedynczy specyfikator formatu.

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';

Wynik:

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

Jak wspomniano, należy poprzedzić je znakiem procentu, aby uniknąć uzyskania wartości NULL i aby specyfikator formatu nie został przypadkowo zinterpretowany jako standardowy ciąg formatu.

Oto, co się stanie, jeśli usunę znak procentu z poprzedniego przykładu:

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';

Wynik:

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

Otrzymujemy zupełnie inny wynik.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odczytać ostatni wiersz z SQL Server

  2. Limit na GDZIE kol. W (...) stan

  3. T-SQL — wstawiaj dane do tabel nadrzędnych i podrzędnych

  4. T-sql - określ, czy wartość jest liczbą całkowitą

  5. Jaki jest najlepszy sposób kontrolowania wersji moich procedur przechowywanych na serwerze SQL?