この記事では、FORMAT()
を使用して日付や時刻をフォーマットするときに使用できるカスタムの日付と時刻のフォーマット指定子のリファレンスを提供します。 例とともに、SQLServerの関数。
これらのフォーマット指定子のいずれかを組み合わせて、カスタマイズされたフォーマット文字列を生成できます。コード例とカスタムフォーマット文字列の仕組みの説明については、以下を参照してください。
表の例は、 datetimeoffsetを想定しています。 2080-05-01 23:09:08.1234567 +07:00
の値 。
説明 | ||
---|---|---|
d | 1から31までの月の日。 | 1 |
dd | 01から31までの月の日。 | 01 |
ddd | 曜日の省略名。 | 水 |
dddd | 曜日のフルネーム。 | 水曜日 |
f | 日付と時刻の値の10分の1秒。 | 1 |
ff | 日付と時刻の値の100分の1秒。 | 12 |
fff | 日付と時刻の値のミリ秒。 | 123 |
ffff | 日付と時刻の値の1万分の1秒。 | 1234 |
fffff | 日付と時刻の値の10万分の1秒。 | 12345 |
ffffff | 日付と時刻の値の100万分の1秒。 | 123456 |
fffffff | 日付と時刻の値の1000万分の1秒。 | 1234567 |
F | ゼロ以外の場合、日付と時刻の値の10分の1秒。 | 1 |
FF | ゼロ以外の場合、日付と時刻の値の100分の1秒。 | 12 |
FFF | ゼロ以外の場合、日付と時刻の値のミリ秒。 | 123 |
FFFF | ゼロ以外の場合、日付と時刻の値の1万分の1秒。 | 1234 |
FFFFF | ゼロ以外の場合、日付と時刻の値は10万分の1秒です。 | 12345 |
FFFFFF | ゼロ以外の場合、日付と時刻の値の100万分の1秒。 | 123456 |
FFFFFFF | ゼロ以外の場合、日付と時刻の値の1000万分の1秒。 | 1234567 |
g | 期間または時代。 | A.D。 |
gg | 期間または時代。 | A.D。 |
h | 1から12までの12時間制を使用した時間。 | 11 |
hh | 01から12までの12時間制を使用した時間。 | 11 |
H | 0から23までの24時間制を使用した時間。 | 23 |
HH | 00から23までの24時間制を使用した時間。 | 23 |
K | タイムゾーン情報。 | +07:00 |
m | 0から59までの分。 | 9 |
mm | 00から59までの分。 | 09 |
M | 1から12までの月。 | 5 |
MM | 01から12までの月。 | 05 |
MMM | 月の略称。 | 5月 |
MMMM | その月のフルネーム。 | 5月 |
s | 2番目の0から59まで。 | 8 |
ss | 2番目の00から59まで。 | 08 |
t | AM/PM指定子の最初の文字。 | P |
tt | AM/PM指定子。 | PM |
y | 年、0から99まで。 | 80 |
yy | 年、00から99まで。 | 80 |
yyy | 年、最低3桁。 | 2080 |
yyyy | 4桁の数字としての年。 | 2080 |
yyyyy | 5桁の数字としての年。 | 02080 |
z | UTCからオフセットされた時間で、先行ゼロはありません。 | +7 |
zz | UTCからオフセットされた時間、1桁の値の先行ゼロ。 | +07 |
zzz | UTCからオフセットされた時間と分。 | +07:00 |
: | 時間区切り記号。 | : |
/ | 日付区切り記号。 | / |
"string" | リテラル文字列区切り文字。 | 文字列 |
% | 次の文字をカスタムフォーマット指定子として定義します。 | |
\ | エスケープ文字。 |
その他の文字は変更されずに結果文字列にコピーされます。
重要: 1文字のカスタム形式の文字列を使用する場合は、パーセント記号(%
を前に付ける必要があります )。または、スペースを追加することもできます。これを行わないと、NULLになるか、フォーマット指定子が標準のフォーマット指定子として解釈される可能性があり、意図しない結果が得られます。
カスタムフォーマット文字列とは何ですか?
カスタムフォーマット文字列は、1つ以上のカスタムフォーマット指定子で構成されます。上記の表は、日付と時刻の値を文字列にフォーマットするために使用できるカスタムフォーマット指定子を示しています。
標準の日付と時刻の形式の文字列もあります。これらはそれぞれ、カスタムフォーマット文字列のエイリアスです。標準形式の文字列は単一の形式指定子で構成されているため、使用が速くなります(ただし、カスタム形式の文字列よりも柔軟性が低くなります)。
標準の日付と時刻の形式の文字列ではない形式の文字列は、カスタムの日付と時刻の形式の文字列として解釈されます。
使用例
カスタムフォーマット指定子が機能する方法は、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 | +----------+-------+------+------+
まったく異なる結果が得られます。