DATETIME_FROM_PARTS関数で時間のみのDateTime型を作成する
SQL ServerでDateTime型から時間のみを取得する方法
SQL ServerのDateTime型は、日付と時刻を組み合わせて表現するデータ型です。このデータ型から時間のみを取得するには、いくつかの方法があります。
方法
- DATEPART関数
DATEPART関数は、DateTime型から指定された日付要素を取得する関数です。時間のみを取得するには、HOUR
、MINUTE
、SECOND
のいずれかの要素を指定します。
SELECT DATEPART(HOUR, GETDATE()) -- 現在時刻の時を取得
SELECT DATEPART(MINUTE, GETDATE()) -- 現在時刻の分を取得
SELECT DATEPART(SECOND, GETDATE()) -- 現在時刻の秒を取得
- CONVERT関数
CONVERT関数は、データを別のデータ型に変換する関数です。DateTime型から文字列型に変換し、時間のみを含む部分文字列を取得する方法があります。
SELECT CONVERT(VARCHAR(10), GETDATE(), 108) -- 現在時刻の時のみを取得
- 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) -- 現在時刻の秒のみを取得
- DATETIME_FROM_PARTS関数
DATETIME_FROM_PARTS関数は、日付と時刻の要素を指定してDateTime型を作成する関数です。時間のみを取得するには、HOUR
、MINUTE
、SECOND
の要素のみを指定します。
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