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

日付/時刻からSQLServerの文字列の例へのCONVERT()

    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サイトを参照してください。


    1. 管理対象ODP.NETドライバーが[データソース]ダイアログに表示されない

    2. PostgreSQLで同等のDATEADD

    3. DBNull.Valueを使用してnull文字列を明確かつ迅速にパラメータ化するにはどうすればよいですか

    4. Sqlite Android Raw QueryINSERTINTOが機能しない