【SQL Server】テーブルの作成日を取得:システムビューとINFORMATION_SCHEMAビュー徹底比較

2024-06-24

SQL Server でテーブルの作成日を取得するには、いくつかの方法があります。ここでは、代表的な2つの方法をご紹介します。

方法1:システムビューを使用する

SQL Server には、システムテーブルと呼ばれる、データベースに関する情報を格納するテーブルが用意されています。これらのシステムテーブルを利用することで、テーブルの作成日を取得することができます。

SELECT
    name AS テーブル名,
    create_date AS 作成日
FROM
    sys.tables
WHERE
    name = 'テーブル名';

このクエリは、sys.tables システムテーブルから、指定された名前のテーブルの作成日を取得します。

方法2:INFORMATION_SCHEMA ビューを使用する

SQL Server 2005 以降では、INFORMATION_SCHEMA ビューを使用することもできます。INFORMATION_SCHEMA ビューは、システムテーブルよりもわかりやすい名前で提供されています。

SELECT
    table_name AS テーブル名,
    create_time AS 作成日
FROM
    INFORMATION_SCHEMA.tables
WHERE
    table_name = 'テーブル名';

このクエリは、INFORMATION_SCHEMA.tables ビューから、指定された名前のテーブルの作成日を取得します。

補足事項

  • 上記のクエリは、テーブル名が存在する場合のみ結果を返します。存在しないテーブル名の場合には、エラーが発生します。
  • 作成日は、yyyy-mm-dd hh:mm:ss.sss 形式で取得されます。

説明

上記のクエリでは、以下の内容をそれぞれ説明します。

  • SELECT: 取得する列を指定します。
  • FROM: 取得するデータのソースを指定します。
  • WHERE: 取得条件を指定します。
  • name: テーブル名を取得します。
  • create_date: テーブルの作成日を取得します。

    上記以外にも、トリガーを使用したり、システムプロシージャを使用したりして、テーブルの作成日を取得する方法があります。

    ご自身の目的に合った方法を選択してください。




    -- テーブル名を入力してください
    SET @table_name = 'テーブル名';
    
    SELECT
        @table_name AS テーブル名,
        create_date AS 作成日
    FROM
        sys.tables
    WHERE
        name = @table_name;
    
    -- テーブル名を入力してください
    SET @table_name = 'テーブル名';
    
    SELECT
        @table_name AS テーブル名,
        create_time AS 作成日
    FROM
        INFORMATION_SCHEMA.tables
    WHERE
        table_name = @table_name;
    
    • SET @table_name = 'テーブル名';: 取得したいテーブル名を @table_name 変数に格納します。
    • @table_name: クエリ内でテーブル名を使用する際に、@table_name 変数を使用します。
    • 上記のサンプルコードは、SQL Server Management Studio などのツールで実行することを想定しています。
    • コマンドプロンプトなどで実行する場合は、SET コマンドを使用する代わりに、変数に直接値を代入することができます。

    -- テーブル名 "employees" の作成日を取得する
    SET @table_name = 'employees';
    
    SELECT
        @table_name AS テーブル名,
        create_date AS 作成日
    FROM
        sys.tables
    WHERE
        name = @table_name;
    

    この例では、employees テーブルの作成日を取得します。




      SQL Server テーブルの作成日を取得するその他の方法

      DBCC INFORMATION_SCHEMA ビューは、INFORMATION_SCHEMA ビューよりも詳細な情報を提供します。ただし、DBCC コマンドを使用する必要があるため、他の方法よりも複雑な方法となります。

      -- テーブル名を入力してください
      SET @table_name = 'テーブル名';
      
      EXEC sp_msforeachtable @command = '
          SELECT
              name AS テーブル名,
              create_date AS 作成日
          FROM
              INFORMATION_SCHEMA.tables
          WHERE
              table_name = @table_name;
      ';
      

      システムカタログビューは、SQL Server 2016 以降で導入された新しいビューです。INFORMATION_SCHEMA ビューよりも新しい情報が提供されています。

      -- テーブル名を入力してください
      SET @table_name = 'テーブル名';
      
      SELECT
          name AS テーブル名,
          create_date AS 作成日
      FROM
          sys.catalog.tables
      WHERE
          name = @table_name;
      

      方法5:CLR プロシージャを使用する

      CLR(Common Language Runtime)プロシージャを使用して、テーブルの作成日を取得することもできます。この方法は、高度なカスタマイズが必要な場合に役立ちます。

      CREATE ASSEMBLY MyAssembly
      FROM 'C:\Path\To\MyAssembly.dll'
      WITH PERMISSION_SET = SAFE;
      
      CREATE PROCEDURE dbo.GetTableCreateDate
          @tableName NVARCHAR(128)
      AS
      BEGIN
          DECLARE @createDate DATETIME;
      
          SELECT
              @createDate = create_date
          FROM
              sys.tables
          WHERE
              name = @tableName;
      
          IF @createDate IS NULL
          BEGIN
              RAISERROR('テーブルが見つかりませんでした。', 16, 1, @tableName);
          END
          ELSE
          BEGIN
              SELECT @createDate AS 作成日;
          END
      END;
      
      GO
      
      -- テーブル名 "employees" の作成日を取得する
      EXEC dbo.GetTableCreateDate @tableName = 'employees';
      

      注意事項

      • 方法3、方法4、方法5は、前述の方法1、方法2よりも複雑な方法です。
      • 方法5は、CLR に関する知識が必要となります。

        sql sql-server t-sql


        SQL、データベース、SDK を活用したカスタム ODBC ドライバー開発

        カスタム ODBC ドライバーを作成するには、以下のスキルと知識が必要です。SQL:データベースとのクエリとデータ操作データベース:接続するデータベースの構造と機能SDK:使用するプログラミング言語の SDK要件定義:ドライバーが必要とする機能を定義します。...


        SQL初心者でも迷わない!PostgreSQLクエリに行番号を表示する3つの基本テクニック

        ROW_NUMBER() 関数を使用するROW_NUMBER() 関数は、WINDOW 句と組み合わせて使用することで、クエリ結果の各行に固有の行番号を割り当てることができます。 これが最も一般的で汎用性の高い方法です。このクエリは、your_table テーブルのすべての行を返し、各行の先頭に 行番号 という名前の新しい列を追加します。 この列には、1 から始まる連番が入力されます。...


        SQL を使用して SQLite データベースから重複行を削除する方法

        SELECT DISTINCT は、重複する行を削除して、各行を1回だけ返すクエリです。これは、重複行を削除する最も簡単な方法です。このクエリは、テーブル名 テーブルのすべての列を返し、重複する行は削除されます。GROUP BY は、1つまたは複数の列に基づいて行をグループ化するクエリです。この機能を使用して、重複行を削除することもできます。...


        SQL Serverでデータベースからすべてのテーブルを削除する方法

        SQL Serverデータベースからすべてのテーブルを1つのクエリで削除するには、いくつかの方法があります。方法1:sys. tables を使用解説USE ステートメントを使用して、対象となるデータベースを選択します。DECLARE ステートメントを使用して、テーブル名の格納用変数 @TableName を宣言します。...