問題:
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つの引数を取ります:
- 新しいデータ型(この例ではNVARCHAR)。
- フォーマットする日付を含む式または列名(この例では、
start_date
列)。 - 整数としてのオプションのスタイルコード。 (この例では、「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以降で作業していて、日付/時刻をフォーマットされた日付/時刻を含む文字列に変換する場合。