sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのFORMAT()でサポートされているカスタムの日付/時刻形式の文字列

    この記事では、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 |
    +----------+-------+------+------+
    

    まったく異なる結果が得られます。


    1. 未使用のものでお金を稼ぐ:シェアリングエコノミーデータモデル

    2. MySQL/MariaDBサーバーを保護する方法

    3. SDFファイル(SQL Server Compact Edition)をどのように開きますか?

    4. postgresでシーケンスをリセットし、id列に新しいデータを入力するにはどうすればよいですか?