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

CAST()を使用してSQLServerで日付形式を変換する方法

    SQL Serverでは、 CONVERT()を使用できます。 日付値をある日付データ型から別の日付データ型に(または他のデータ型間で)変換する関数。ただし、データ型間で変換するためのT-SQLツールボックスの機能はこれだけではありません。

    CAST() 関数はANSISQL標準の一部であり、ほとんどのことを実行します。 CONVERT() します。そのため、多くの場合、これらの機能のどれを使用するかを選択できます。

    多くのデータベース専門家はCAST()を好みます ただし、これはANSI SQL標準の一部であるため、 CONVERT()を好む人もいます。 T-SQLの実装が提供する追加機能(日付スタイルを提供できるなど)が原因です。

    いずれにせよ、この記事では、 CAST()を使用して異なる日付形式間で変換する例を示します。 。

    構文

    構文は次のようになります:

    CAST ( expression AS data_type [ ( length ) ] )

    これらの引数は次のように定義されています。

    有効な式。
    data_type
    ターゲットデータ型。これには、 xmlが含まれます 、 bigint 、および sql_variant 。エイリアスデータ型は使用できません。
    長さ
    ターゲットデータ型の長さを指定するオプションの整数。デフォルト値は30です 。

    例1-SYSDATETIME()を日付としてキャスト

    この例では、 SYSDATETIME()を使用して現在の日付/時刻を生成します。 関数を作成し、戻り値を日付としてキャストします データ型。

    SYSDATETIME()に注意してください その値をdatetime2(7)として生成します データ型なので、そのデータ型から別のデータ型に変換しています。

    SELECT 
        SYSDATETIME() AS Original,
        CAST(SYSDATETIME() AS date) AS Converted;

    結果:

    +-----------------------------+-------------+
    | Original                    | Converted   |
    |-----------------------------+-------------|
    | 2018-06-07 00:15:32.9265884 | 2018-06-07  |
    +-----------------------------+-------------+
    

    例2– SYSDATETIME()をsmalldatetimeとしてキャストします

    この例では、日付を smalldatetimeとしてキャストします。 データ型。

    SELECT 
        SYSDATETIME() AS Original,
        CAST(SYSDATETIME() AS smalldatetime) AS Converted;

    結果:

    +-----------------------------+---------------------+
    | Original                    | Converted           |
    |-----------------------------+---------------------|
    | 2018-06-07 00:16:05.5142017 | 2018-06-07 00:16:00 |
    +-----------------------------+---------------------+
    

    例3– SYSDATETIME()をdatetimeoffsetとしてキャストします

    この例では、日付を datetimeoffsetとしてキャストします。 データ型。

    SELECT 
        SYSDATETIME() AS Original,
        CAST(SYSDATETIME() AS datetimeoffset) AS Converted;

    結果:

    +-----------------------------+------------------------------------+
    | Original                    | Converted                          |
    |-----------------------------+------------------------------------|
    | 2018-06-07 10:19:23.9457462 | 2018-06-07 10:19:23.9457462 +00:00 |
    +-----------------------------+------------------------------------+
    

    例4– SYSDATETIME()を時間としてキャストする

    値の日付コンポーネントを表示することに限定されません。 時間としてキャストすることもできます データ型。時間コンポーネントのみが返されます。このように:

    SELECT 
        SYSDATETIME() AS Original,
        CAST(SYSDATETIME() AS time) AS Converted;

    結果:

    +-----------------------------+------------------+
    | Original                    | Converted        |
    |-----------------------------+------------------|
    | 2018-06-07 00:20:21.5829364 | 00:20:21.5829364 |
    +-----------------------------+------------------+
    

    例5– SYSDATETIMEOFFSET()を日付としてキャストする

    別の関数を使用して元の日付/時刻の値を生成する例を次に示します。

    SELECT 
        SYSDATETIMEOFFSET() AS Original,
        CAST(SYSDATETIMEOFFSET() AS date) AS Converted;

    結果:

    +------------------------------------+----------------------+
    | Original                           | Converted            |
    |------------------------------------+----------------------|
    | 2018-06-07 10:21:16.3617030 +10:00 | 2018-06-07           |
    +------------------------------------+----------------------+
    

    例6–データベースクエリからの変換

    WideWorldImportersの列から取得した日付を変換する例を次に示します。 サンプルデータベース:

    USE WideWorldImporters;
    SELECT DISTINCT TOP 10 
        LastEditedWhen, 
        CAST(LastEditedWhen AS date) AS 'Converted'
    FROM Sales.CustomerTransactions;

    結果:

    +-----------------------------+-------------+
    | LastEditedWhen              | Converted   |
    |-----------------------------+-------------|
    | 2013-01-02 11:30:00.0000000 | 2013-01-02  |
    | 2013-01-03 11:30:00.0000000 | 2013-01-03  |
    | 2013-01-04 11:30:00.0000000 | 2013-01-04  |
    | 2013-01-05 11:30:00.0000000 | 2013-01-05  |
    | 2013-01-06 11:30:00.0000000 | 2013-01-06  |
    | 2013-01-08 11:30:00.0000000 | 2013-01-08  |
    | 2013-01-09 11:30:00.0000000 | 2013-01-09  |
    | 2013-01-10 11:30:00.0000000 | 2013-01-10  |
    | 2013-01-11 11:30:00.0000000 | 2013-01-11  |
    | 2013-01-12 11:30:00.0000000 | 2013-01-12  |
    +-----------------------------+-------------+
    

    CONVERT()を使用して日付形式を変換する方法を示す投稿も作成しました 上記と同じ例を使用して関数を作成します。


    1. SQLServerの上位100レコードを更新するにはどうすればよいですか

    2. 文字列を正しい方法で分割する–または次善の方法

    3. MariaDBでのGREATEST()のしくみ

    4. MariaDBEnterpriseBackupとClusterControlBackupManagementの比較