【SQL Server】テーブルの作成日を取得:システムビューとINFORMATION_SCHEMAビュー徹底比較
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