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

T-SQLで日付をフォーマットする方法

    問題:

    SQLServerで日付値を別の形式で表示したい。

    例:

    データベースには、company id列にデータがあります (主キー)、名前 、および start_date

    id 名前 start_date
    1 リサ銀行 2019-01-20
    2 クレジットファイナンシャルインスティテュート 2018-03-14
    3 ウィリアムズホールディング 2019-10-28

    会社ごとに、開始日を新しい形式「YYYY / MM / DD」に変換してみましょう。ここで、YYYYは4桁の年、MMは2桁の月、DDは2桁の日です。

    ソリューション1:

    CONVERT()を使用します 働き。作成するクエリは次のとおりです。

    SELECT 
      CONVERT(NVARCHAR, start_date, 111 ) AS new_date
    FROM company;
    

    結果は次のとおりです。

    name start_date
    リサ銀行 2019/01/20
    クレジットファイナンシャルインスティテュート 2018/03/14
    ウィリアムズホールディング 2019/10/28

    ディスカッション:

    CONVERT()を使用します 指定された列または式から日付の形式を変更する関数。

    この関数は3つの引数を取ります:

    1. 新しいデータ型(この例ではNVARCHAR)。
    2. フォーマットする日付を含む式または列名(この例では、start_date 列)。
    3. 整数としてのオプションのスタイルコード。 (この例では、「111」スタイルは、部分を区切るためにスラッシュを使用して日付を表示します。)

    次の表に、最も一般的な日付スタイルコードを示します。

    code 説明
    101 2019年11月30日
    102 2019.11.30
    103 2019年11月30日
    104 30.11.2019
    105 30-11-2019
    110 2019年11月30日
    111 2019/11/30

    フォーマットスタイルの包括的なリストは、T-SQLドキュメントにあります。

    上記のクエリにより、Lisa Bankの日付2019-01-20の形式が、日付「2019/01/20」を含む文字列に変更されました。

    ソリューション2:

    SQL Server 2012以降では、FORMAT()を使用できます。 日付/時刻形式を変更する機能。以下の文字を使用して、目的の形式を指定します。

    パターン 説明
    dd 01から31の範囲の日
    MM 範囲01〜12の月
    yy 2桁の年
    yyyy 4桁の年
    HH 00〜23の範囲の時間
    mm 00〜59の範囲の分
    ss 00〜59の範囲の秒

    FORMAT()を使用して作成するクエリは次のとおりです。

    SELECT 
      FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date
    FROM company;
    

    最初の引数は、再フォーマットする日時/日付/時刻の値です。 2つ目は、新しい形式のパターンを含む文字列です。この関数は、NVARCHARデータ型を返します。 FORMAT()を使用する SQL Server 2012以降で作業していて、日付/時刻をフォーマットされた日付/時刻を含む文字列に変換する場合。


    1. OPENJSON「キーワード「with」の近くの構文が正しくありません。」 SQL Server(解決済み)

    2. SQLiteでiif()がどのように機能するか

    3. MySQLTEXTデータ型のストレージサイズを理解する

    4. SQLで月の最初の日を選択するにはどうすればよいですか?