問題:
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以降で作業していて、日付/時刻をフォーマットされた日付/時刻を含む文字列に変換する場合。