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

SQLServerでのDateTimeのYYYY-MM-DD形式への変換

    SQL Serverデータベースには、数値、テキスト文字列、ブール値、日付などのさまざまなデータ型を格納できます。ただし、このようなデータの格納と処理には固有の機能があります。現在の記事では、SQL Serverデータベーステーブルに日付を格納し、さまざまな種類の日付をSQL Server形式YYYY-MM-DDに、またはその逆に変換することに焦点を当てます。

    始めましょう!

    YYYY-MM-DD –SQLServerの日付形式

    SQL Server YYYY-MM-DDデータ形式は、 は4桁でマークされます(例:2021)。 次に、1〜12の範囲の2桁で指定されます。たとえば、6月は06になります。最後に、月の日 20などの2桁で表示されます。したがって、日付は2021年6月6日です。 、2021-06-21として保存されます。これは、SQLServerデータベースの日付のYYYY-MM-DD形式です。

    SQL Serverでは、DateまたはDateTimeデータ型のいずれかを使用して日付を格納できます。 Dateデータ型とDateTimeデータ型の違いは、両方のデータ型が日付情報を格納する詳細レベルにあります。

    • DateTime データ型は日付を格納します 一緒に 時間 時間の情報 、および
    • 日付 データ型では、日付のみを保存できます 時間情報のない情報。

    次の例は、Dateデータ型とDateTimeデータ型の違いを示しています。

    まず、ダミーの MyDatabase を作成します データベースと1つのテーブル(患者 )その中に。

    患者 テーブルには、Id、Name、Gender、DOB(生年月日)、およびDOD(死亡日)の5つの列があります。 DOB列のタイプはDateですが、DOD列のタイプはDateTimeデータ型です。

    CREATE DATABASE MyDatabase
    
    USE MyDatabase
    CREATE TABLE Patient
    
    (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Name VARCHAR (50) NOT NULL,
    Gender VARCHAR (50),
    DOB Date,
    DOD DateTime
    )
    

    次のスクリプトは、いくつかのダミーレコードを Patient に挿入します テーブル:

    INSERT INTO Patient
    VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
    ('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
    ('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
    ('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
    ('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')
    

    DOB列とDOD列に挿入された値の違いに注意してください。 DOB列にはYYYY-MM-DD形式の値がありますが、DOD列には、HH:MM:SS(時間:分:秒)情報を渡します。

    患者がどのようになっているのか見てみましょう テーブルが見えます。次のSQLスクリプトを実行して、Patientテーブルからすべてのレコードを選択します。

    SELECT * FROM Patient

    SQLServerでDateTimeを日付形式YYYY-MM-DDに変換する方法

    多くの場合、必要なのは日付部分だけです。 DateTimeから 桁。日付値はデフォルトでYYYY-MM-DD形式でSQLServerに格納されるため、 DateTimeデータ型から日付部分を抽出すると、この形式で日付が返されます

    例を見てみましょう。 DOD 患者の列 テーブルはDateTimeに値を格納します フォーマット。 日付を抽出する方法を見てみましょう 列の一部:

    SELECT CAST(DOD AS DATE) AS DOD_Date
    FROM Patient
    

    上記のスクリプトからわかるように、DateTimeタイプ列をDateに変換するキャストを使用できます 働き。列名の後にASを渡す必要があります ステートメントと日付 キャストに入力します 機能。

    スクリプトの結果は次のとおりです。DOD列の値が選択され、YYYY-MM-DD形式に変換されます。

    元のDODの両方を選択しましょう 列の値と変換されたDOD それらの違いを示す値:

    SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
    FROM Patient
    

    最後に、テーブル内のすべての列を選択して1つの列のみをキャストする場合(たとえば、DOD列を日付型に変換する場合)、次のスクリプトを実行できます。

    SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
    from Patient t
    

    出力には、すべてのテーブル列と、DOD列の日付部分を含むDOD_Date列が表示されます。

    文字列をSQLServerの日付形式に変換する方法YYYY-MM-DD

    多くの場合、日付はSQLServerテーブルの列に文字列形式で格納されます。文字列値をSQLServerの日付形式YYYY-MM-DDに変換できます。

    患者に別の列を作成しましょう テーブル。列の名前はArriv_Date (患者の到着日を示すダミー列)、列タイプは VARCHAR 。次のスクリプトを実行して、この列を作成します。

    ALTER TABLE Patient
    ADD Arriv_Date varchar(50);
    

    新しいArriv_Dateを受け取ります Patientに列が追加されました 桁。現時点では、 Arriv_Date 列にNULLが含まれています 値。

    SELECT * FROM Patient

    ここで、いくつかのレコードを Arriv_Dateに追加しましょう。 桁。次のスクリプトは、さまざまな日付形式の文字列をこの列に挿入します。

    UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
    UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
    UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
    UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
    UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10
    

    それでは、 Arriv_Dateのデータがどのようになっているのか見てみましょう。 列が見えます。以下のスクリプトを実行します:

    SELECT * FROM Patient

    Arriv_Dateのすべての文字列を変換するには SQLServerの日付形式の列YYYY-MM-DDキャストを再度使用できます 働き。列名の後にASを指定する必要があります ステートメントと日付 タイプ。

    次のスクリプトは、元の Arriv_Dateを選択します 日付形式に変換される列とその中の値。

    Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
    FROM Patient
    

    出力には、さまざまな日付形式の値が表示されます。文字列タイプの列Arriv_Date YYYY-MM-DDに変換されます ARRIVAL_DATEの形式 列:

    SQLServerの日付形式YYYY-MM-DDを他の形式に変換する方法

    他の形式をYYYY-MM-DDに変換できるのと同じように、その逆も可能です。 YYYY-MM-DDを変換するには 日付形式を異なる日付形式の文字列に変換するには、CONVERT関数を使用できます。

    CONVERT関数は、次のスクリプトのVARCHAR(50)であるターゲットタイプ、元の日付列、およびコードの3つのパラメーターを受け入れます。このコードは、変換された日付がどのようになるかを定義します。ここで、コード値105は、日付をDD-MM-YYYY形式に変換します。

    スクリプトを実行して、日付をYYYY-MM-DD形式からDD-MM-YYYYに変換します。

    SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
    From Patient
    

    出力は次のとおりです:

    別の例を見てみましょう。変換された日付のコード値106は、日付をYYYY-MM-DD形式からDDMONYYYY形式に変換します。たとえば、最初の列では、日付1960-12-15が1960年12月12日に変換されます。

    SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
    From Patient
    

    同様に、コード値6は、日付をDDMONYY形式に変換します。

    SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
    From Patient
    

    そして最後に、コード値11は、日付をYYYY / MM/DD形式に変換します。

    SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
    From Patient
    

    さまざまな日付形式と対応するコードすべての詳細については、SQLServerの公式ドキュメントを参照してください。

    結論

    このようにして、SQLサーバーの日付形式YYYY-MM-DDの本質と、日付をこの形式に、またはその逆に変換する特定のケースの両方を明確にしました。

    CAST関数を使用してDateTimeや文字列などのさまざまなデータ型をYYYY-MM-DD形式に変換し、CONVERT関数を使用してYYYY-MM-DDの日付を他の形式に変換する方法を学びました。

    さらに、SQL Serverスペシャリスト向けの最新のツールを使用すると、日付の編集作業がはるかに簡単になります。たとえば、多機能のdbForge Studio for SQL Serverには、他のオプションの中でも、SQLServerで日付を操作するときに使用できる便利なビジュアルデータエディターが含まれています。

    この情報がお役に立てば幸いです。乞うご期待!


    1. PL/pgSQL匿名コードブロック

    2. MariaDBでのINSTR()のしくみ

    3. MySQLパフォーマンス–構成ファイルからの5つのパラメーター

    4. SQL Serverで同等のINSTR()