CONVERT() 関数を使用すると、データ型間で変換できます。 CAST()に似ています 関数ですが、CONVERT()の利点の1つです つまり、日付/時刻データ型から文字列に変換するときに、戻り値を含めるスタイルを指定するオプションの引数を追加できます。たとえば、ddとして返すことができます。 .mm.yyyy 、 yyyy-mm-dd 、 dd mon yyyy 、など
この記事には、CONVERT()を使用して日付/時刻の値を文字列に変換するときに返すことができるさまざまなスタイルの例が含まれています。 SQLServerで機能します。
基本的な例
日時から変換するときのデフォルトのスタイル およびsmalldatetime データ型は0です および100 (これらは同じスタイルを表します)。したがって、スタイル(3番目のパラメーター)を指定しない場合は、次のようにスタイル設定されます。
DECLARE @date datetime = GETDATE();
SELECT
@date AS Original,
CONVERT(varchar, @date) AS Converted; 結果:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
ただし、元のデータ型が日時でない場合は、異なる結果が得られます またはsmalldatetime 。
別のスタイルで返す必要がある場合は、3番目の引数を指定する必要があります。
2桁の年のスタイル
以下は、2桁の年コンポーネントを使用してスタイルを指定するために使用できるさまざまな値の例です。
スタイル1から6
DECLARE @date datetime2 = '2018-06-07';
SELECT
CONVERT(nvarchar(30), @date, 1) AS '1',
CONVERT(nvarchar(30), @date, 2) AS '2',
CONVERT(nvarchar(30), @date, 3) AS '3',
CONVERT(nvarchar(30), @date, 4) AS '4',
CONVERT(nvarchar(30), @date, 5) AS '5',
CONVERT(nvarchar(30), @date, 6) AS '6'; 結果:
+----------+----------+----------+----------+----------+-----------+ | 1 | 2 | 3 | 4 | 5 | 6 | |----------+----------+----------+----------+----------+-----------| | 06/07/18 | 18.06.07 | 07/06/18 | 07.06.18 | 07-06-18 | 07 Jun 18 | +----------+----------+----------+----------+----------+-----------+
スタイル7から6
DECLARE @date datetime2 = '2018-06-07';
SELECT
CONVERT(nvarchar(30), @date, 7) AS '7',
CONVERT(nvarchar(30), @date, 8) AS '8',
CONVERT(nvarchar(30), @date, 10) AS '10',
CONVERT(nvarchar(30), @date, 11) AS '11',
CONVERT(nvarchar(30), @date, 12) AS '12',
CONVERT(nvarchar(30), @date, 14) AS '14'; 結果:
+------------+----------+----------+----------+--------+------------------+ | 7 | 8 | 10 | 11 | 12 | 14 | |------------+----------+----------+----------+--------+------------------| | Jun 07, 18 | 00:00:00 | 06-07-18 | 18/06/07 | 180607 | 00:00:00.0000000 | +------------+----------+----------+----------+--------+------------------+
4桁の年のスタイル
以下は、4桁の年コンポーネントを使用してスタイルを指定するために使用できるさまざまな値の例です。
スタイル100〜103
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
CONVERT(nvarchar(30), @date, 100) AS '100',
CONVERT(nvarchar(30), @date, 101) AS '101',
CONVERT(nvarchar(30), @date, 102) AS '102',
CONVERT(nvarchar(30), @date, 103) AS '103'; 結果:
+---------------------+------------+------------+------------+ | 100 | 101 | 102 | 103 | |---------------------+------------+------------+------------| | Jun 7 2018 2:35AM | 06/07/2018 | 2018.06.07 | 07/06/2018 | +---------------------+------------+------------+------------+
スタイル104から108
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
CONVERT(nvarchar(30), @date, 104) AS '104',
CONVERT(nvarchar(30), @date, 105) AS '105',
CONVERT(nvarchar(30), @date, 106) AS '106',
CONVERT(nvarchar(30), @date, 107) AS '107',
CONVERT(nvarchar(30), @date, 108) AS '108'; 結果:
+------------+------------+-------------+--------------+----------+ | 104 | 105 | 106 | 107 | 108 | |------------+------------+-------------+--------------+----------| | 07.06.2018 | 07-06-2018 | 07 Jun 2018 | Jun 07, 2018 | 02:35:52 | +------------+------------+-------------+--------------+----------+
スタイル109から112
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
CONVERT(nvarchar(30), @date, 109) AS '109',
CONVERT(nvarchar(30), @date, 110) AS '110',
CONVERT(nvarchar(30), @date, 111) AS '111',
CONVERT(nvarchar(30), @date, 112) AS '112'; 結果:
+--------------------------------+------------+------------+----------+ | 109 | 110 | 111 | 112 | |--------------------------------+------------+------------+----------| | Jun 7 2018 2:35:52.8537677AM | 06-07-2018 | 2018/06/07 | 20180607 | +--------------------------------+------------+------------+----------+
スタイル113〜114
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
CONVERT(nvarchar(30), @date, 113) AS '113',
CONVERT(nvarchar(30), @date, 114) AS '114'; 結果:
+------------------------------+------------------+ | 113 | 114 | |------------------------------+------------------| | 07 Jun 2018 02:35:52.8537677 | 02:35:52.8537677 | +------------------------------+------------------+
スタイル120〜127
DECLARE @date datetime2 = '2018-06-07';
SELECT
CONVERT(nvarchar(30), @date, 120) AS '120',
CONVERT(nvarchar(30), @date, 126) AS '126',
CONVERT(nvarchar(30), @date, 127) AS '127'; 結果:
+---------------------+---------------------+---------------------+ | 120 | 126 | 127 | |---------------------+---------------------+---------------------| | 2018-06-07 00:00:00 | 2018-06-07T00:00:00 | 2018-06-07T00:00:00 | +---------------------+---------------------+---------------------+
スタイル130
DECLARE @date datetime2 = '2018-06-07';
SELECT
CONVERT(nvarchar(30), @date, 130) AS '130'; 結果:
+--------------------------------+ | 130 | |--------------------------------| | 24 رمضان 1439 12:00:00.0000000 | +--------------------------------+
Microsoftは、この値が米国のデフォルトのSSMSインストールでは正しくレンダリングされないことを警告しています。
スタイル131
DECLARE @date datetime2 = '2018-06-07';
SELECT
CONVERT(nvarchar(30), @date, 131) AS '131'; 結果:
+-------------------------------+ | 131 | |-------------------------------| | 24/09/1439 12:00:00.0000000AM | +-------------------------------+
利用可能な日付/時刻スタイルの詳細については、MicrosoftのWebサイトを参照してください。