DATETIME_FROM_PARTS関数で時間のみのDateTime型を作成する

2024-04-02

SQL ServerでDateTime型から時間のみを取得する方法

SQL ServerのDateTime型は、日付と時刻を組み合わせて表現するデータ型です。このデータ型から時間のみを取得するには、いくつかの方法があります。

方法

  1. DATEPART関数

DATEPART関数は、DateTime型から指定された日付要素を取得する関数です。時間のみを取得するには、HOURMINUTESECONDのいずれかの要素を指定します。

SELECT DATEPART(HOUR, GETDATE()) -- 現在時刻の時を取得
SELECT DATEPART(MINUTE, GETDATE()) -- 現在時刻の分を取得
SELECT DATEPART(SECOND, GETDATE()) -- 現在時刻の秒を取得
  1. CONVERT関数

CONVERT関数は、データを別のデータ型に変換する関数です。DateTime型から文字列型に変換し、時間のみを含む部分文字列を取得する方法があります。

SELECT CONVERT(VARCHAR(10), GETDATE(), 108) -- 現在時刻の時のみを取得
  1. SUBSTRING関数
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 2) -- 現在時刻の時のみを取得
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 4, 2) -- 現在時刻の分のみを取得
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 7, 2) -- 現在時刻の秒のみを取得
  1. DATETIME_FROM_PARTS関数

DATETIME_FROM_PARTS関数は、日付と時刻の要素を指定してDateTime型を作成する関数です。時間のみを取得するには、HOURMINUTESECONDの要素のみを指定します。

SELECT DATETIME_FROM_PARTS(0, 0, 0, 12, 30, 0) -- 12時30分00秒のDateTime型を取得

補足

  • 上記の方法は、SQL Server以外にも多くのデータベースで利用可能です。
  • 時間のみを取得するだけでなく、日付と時刻を別々に取得することも可能です。



-- 現在時刻の時を取得
SELECT DATEPART(HOUR, GETDATE());

-- 現在時刻の分を取得
SELECT DATEPART(MINUTE, GETDATE());

-- 現在時刻の秒を取得
SELECT DATEPART(SECOND, GETDATE());

-- 現在時刻の時のみを取得
SELECT CONVERT(VARCHAR(10), GETDATE(), 108);

-- 現在時刻の時のみを取得
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 2);

-- 現在時刻の分のみを取得
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 4, 2);

-- 現在時刻の秒のみを取得
SELECT SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 7, 2);

-- 12時30分00秒のDateTime型を取得
SELECT DATETIME_FROM_PARTS(0, 0, 0, 12, 30, 0);
12
30
00
2023-11-14 12:30:00.000
12
30
00
2023-11-14 12:30:00.000
  • 上記のコードは、SQL Server Management Studio (SSMS) などのツールを使用して実行できます。
  • コードを実行する前に、データベースに接続する必要があります。



DATEDIFF関数は、2つの日付/時刻の差を計算する関数です。この関数を用いて、現在時刻と午前0時の差を計算することで、時間を取得することができます。

SELECT DATEDIFF(MINUTE, '00:00:00', GETDATE()) -- 現在時刻の時と分を取得
SELECT CAST(GETDATE() AS TIME) -- 現在時刻の時のみを取得

FORMAT関数は、データを指定された書式で表示する関数です。DateTime型を時間のみを含む書式で表示する方法があります。

SELECT FORMAT(GETDATE(), 'HH:mm:ss') -- 現在時刻の時、分、秒を取得
  • 上記の方法はいずれも、特定の状況で役立つ可能性があります。

注意事項

  • 上記の方法は、SQL Serverのバージョンによって使用できない場合があります。
  • 使用する前に、該当するバージョンのドキュメントを確認してください。

sql-server t-sql datetime


外部キーとパフォーマンス:知っておくべき5つのポイント

外部キーは、2つのテーブル間の関連性を定義するデータベースの制約です。外部キーは、親テーブルの主キーを参照し、子テーブルの列に格納されます。外部キーがクエリのパフォーマンスを向上させる理由は以下の通りです。結合の効率化: 外部キーは、結合条件を指定する際に役立ちます。テーブル間の関連性を定義することで、データベースは必要な行を効率的に見つけることができます。...


【保存版】C#, SQL Server、ADO.NETにおけるvarchar(MAX)パラメータ宣言のサイズ指定:詳細解説とサンプルコード付き

本記事では、C#, SQL Server、ADO. NETにおけるvarchar(MAX)パラメータ宣言のサイズ設定について、詳細な解説を行います。varchar(MAX)型は、最大 4,000 文字までの文字列を格納できる可変長データ型ですが、パラメータ宣言時に適切なサイズを指定しないと、パフォーマンスやデータ整合性の問題が発生する可能性があります。...


【完全ガイド】SQL Server、Oracle、PostgreSQLにおける外部キー設定

外部キーとは?外部キーは、複数のテーブル間でデータの関連性を定義するものです。親テーブルの主キー列を参照し、子テーブルの列に格納されます。NULL 値と重複許可外部キーは、以下の 2 つの観点から設定できます。NULL 値の許可: 子テーブルの列に NULL 値を格納できるかどうか。...


SQL ServerでSELECT * INTO tempTable FROM CTEQueryの完全ガイド

この解説では、SQL Serverで共通テーブル式(CTE)クエリから一時テーブルを作成する方法を紹介します。一時テーブルは、データベースセッション中にのみ存在する仮想的なテーブルです。 データ分析や中間処理など、一時的なデータ保存に役立ちます。...


SQL Server JOIN で NULL 値を扱う:ベストプラクティス

欠損値 とは、データベースのカラムに値が入力されていない状態を指します。 これは、データがまだ入力されていない、入力忘れ、削除されたなど、様々な理由で発生します。JOIN 操作において、欠損値は結果に影響を与える可能性があります。 具体的には、以下の 2 つの問題が発生します。...


SQL SQL SQL Amazon で見る



【パフォーマンス比較】SQL Serverで日付と時刻から日付のみを取得する方法

SQL Serverでdate型の日付のみをdatetime型の日付と時刻から抽出する方法はいくつかあります。 それぞれ異なる方法には、長所と短所があり、状況によって最適な方法が変わってきます。 ここでは、代表的な方法とその比較、さらにパフォーマンスを向上させるためのヒントについて解説します。