日付と時刻のデータ型および関数 (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

この記事のこのセクションでは、すべての Transact-SQL の日付と時刻のデータ型および関数について説明します。

日付および時刻のデータ型

Transact-SQL の日付と時刻のデータ型を次の表に示します。

データ型 フォーマット Range 精度 ストレージ サイズ (バイト) ユーザー定義の 1 秒未満の秒の有効桁数 タイム ゾーン オフセット
time hh:mm:ss[.nnnnnnn] 00:00:00.0000000 ~ 23:59:59.9999999 100 ナノ秒 3 から 5 まで はい いいえ
date YYYY-MM-DD 0001-01-01 ~ 31.12.99 1 日 3 いいえ いいえ
smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01 から 2079-06-06 1 分 4 いいえ いいえ
datetime YYYY-MM-DD hh:mm:ss[.nnn] 1753-01-01 から 9999-12-31 0.00333 秒 8 いいえ いいえ
datetime2 YYYY-MM-DD hh:mm:ss[.nnnnnnn] 0001-01-01 00:00:00.0000000 から 9999-12-31 23:59:59.9999999 100 ナノ秒 6 ~ 8 はい いいえ
datetimeoffset YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm 0001-01-01 00:00:00.0000000 から 9999-12-31 23:59:59.9999999 (UTC) 100 ナノ秒 8 ~ 10 はい はい

注意

Transact-SQL の rowversion データ型は、日付または時刻のデータ型ではありません。 timestamp は、rowversion の非推奨のシノニムです。

日付と時刻関数

Transact-SQL の日付と時刻の関数を次の表に示します。 決定性の詳細については、「決定的関数と非決定的関数」を参照してください。

システムの日付と時刻の値を返す関数

Transact-SQL では、SQL Server のインスタンスが実行されているコンピューターのオペレーティング システムから、システムのすべての日付値と時刻値を取得します。

高精度のシステムの日付と時刻の関数

SQL Server 2008 (10.0.x) 以降、データベース エンジンによって GetSystemTimeAsFileTime() Windows API を使用して日付と時刻の値が取得されます。 精度は、SQL Server のインスタンスが実行されているコンピューター ハードウェアおよび Windows のバージョンによって異なります。 この API の精度は 100 ナノ秒で固定されます。 精度を確認するには、GetSystemTimeAdjustment() Windows API を使用します。

機能 構文 戻り値 戻り値のデータ型 決定性
SYSDATETIME SYSDATETIME ( ) SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetime2(7) 値を返します。 戻り値には、タイム ゾーン オフセットが含まれません。 datetime2(7) 非決定的
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetimeoffset(7) 値を返します。 戻り値にはタイム ゾーン オフセットが含まれます。 datetimeoffset(7) 非決定的
SYSUTCDATETIME SYSUTCDATETIME ( ) SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetime2(7) 値を返します。 この関数は、日付と時刻を UTC 時刻 (世界協定時刻) として返します。 datetime2(7) 非決定的

低精度のシステムの日付と時刻の関数

機能 構文 戻り値 戻り値のデータ型 決定性
CURRENT_TIMESTAMP CURRENT_TIMESTAMP SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetime 値を返します。 戻り値には、タイム ゾーン オフセットが含まれません。 datetime 非決定的
GETDATE GETDATE ( ) SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetime 値を返します。 戻り値には、タイム ゾーン オフセットが含まれません。 datetime 非決定的
GETUTCDATE GETUTCDATE ( ) SQL Server のインスタンスが実行されているコンピューターの日付と時刻を含む、datetime 値を返します。 この関数は、日付と時刻を UTC 時刻 (世界協定時刻) として返します。 datetime 非決定的

日付と時刻の部分を返す関数

機能 構文 戻り値 戻り値のデータ型 決定性
DATE_BUCKET DATE_BUCKET ( datepart, number, date, origin ) origin パラメーターによって定義されたタイムスタンプから各 date-time バケットの開始に対応する値を返すか、基準のパラメーターが指定されていない場合は、1900-01-01 00:00:00.000 の既定の基準値を返します。 戻り値の型は、date に指定された引数によって異なります。 非決定的
DATENAME DATENAME ( datepart, date ) 指定された日付の指定された datepart を表す文字列を返します。 nvarchar 非決定的
DATEPART DATEPART ( datepart, date ) 指定された date の指定された datepart を表す整数を返します。 int 非決定的
DATETRUNC DATETRUNC ( datepart, date ) 入力の date を指定した datepart に切り詰めて返します。 戻り値の型は、date に指定された引数によって異なります。 非決定的
DAY DAY ( date ) 指定された date の日の部分を表す整数を返します。 int Deterministic
MONTH MONTH ( date ) 指定された date の月の部分を表す整数を返します。 int Deterministic
YEAR YEAR ( date ) 指定された date の年の部分を表す整数を返します。 int Deterministic

日付と時刻の部分からそれぞれの値を返す関数

機能 構文 戻り値 戻り値のデータ型 決定性
DATEFROMPARTS DATEFROMPARTS ( year, month, day ) 返します、 日付 指定された年、月、および日の値です。 date Deterministic
DATETIME2FROMPARTS DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision) 指定された有効桁数を使用して、指定された日付と時刻を表す datetime2 値を返します。 datetime2(precision) Deterministic
DATETIMEFROMPARTS DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds) 返します、 datetime 指定した日付と時刻の値です。 datetime Deterministic
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision) 指定されたオフセットおよび有効桁数を使用して、指定された日付と時刻を表す datetimeoffset 値を返します。 datetimeoffset(precision) Deterministic
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) 返します、 smalldatetime 指定した日付と時刻の値です。 smalldatetime Deterministic
TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) 指定された有効桁数を使用して、指定された時刻を表す time 値を返します。 time(precision) Deterministic

日付と時刻の差の値を返す関数

機能 構文 戻り値 戻り値のデータ型 決定性
DATEDIFF DATEDIFF ( datepart, startdate, enddate ) 指定された 2 つの日付間の差を、日付または時刻の datepart の境界の数値で返します。 int Deterministic
DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) 指定された 2 つの日付間の差を、日付または時刻の datepart の境界の数値で返します。 bigint Deterministic

日付と時刻の値を変更する関数

機能 構文 戻り値 戻り値のデータ型 決定性
DATEADD DATEADD (datepart, number, date ) 指定された date の指定された datepart に期間を加えた新しい datetime の値を返します。 date 引数のデータ型 Deterministic
EOMONTH EOMONTH ( start_date [, month_to_add ] ) オプションのオフセットを使用して、指定された日付を含んでいる月の最後の日付を返します。 戻り値の型は、start_date 引数型、または date データ型です。 Deterministic
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) SWITCHOFFSET は、DATETIMEOFFSET 値のタイム ゾーン オフセットを変更し、UTC 値を保持します。 DATETIMEOFFSET の小数部の有効桁数を持つ datetimeoffset Deterministic
TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET では、datetime2 値が datetimeoffset 値に変換されます。 TODATETIMEOFFSET は、datetime2 値を、指定された time_zone のローカル時刻で解釈します。 datetime 引数の小数部の有効桁数を持つ datetimeoffset Deterministic

セッションの形式の関数を設定または返す関数

機能 構文 戻り値 戻り値のデータ型 決定性
@@DATEFIRST @@DATEFIRST 現在のセッションにおける、SET DATEFIRST の現在の値を返します。 tinyint 非決定的
SET DATEFIRST SET DATEFIRST { number | @number_var } 週の最初の曜日を 1 から 7 の数値で設定します。 適用なし 適用なし
SET DATEFORMAT SET DATEFORMAT { format | @format_var } datetime 型または smalldatetime 型のデータを入力する場合の日付要素 (月、日、年) の順番を設定します。 適用なし 適用なし
@@LANGUAGE @@LANGUAGE 現在使用している言語の名前を返します。 @@LANGUAGE は、日付または時刻の関数ではありません。 ただし、言語設定は日付関数の出力に影響します。 適用なし 適用なし
SET LANGUAGE SET LANGUAGE { [ N ] 'language' | @language_var } セッションおよびシステム メッセージの言語環境を設定します。 SET LANGUAGE は、日付または時刻の関数ではありません。 ただし、言語設定は日付関数の出力に影響します。 適用なし 適用なし
sp_helplanguage sp_helplanguage [ [ @language = ] 'language' ] サポートされているすべての言語の日付形式に関する情報を返します。 sp_helplanguage は、日付または時刻のストアド プロシージャではありません。 ただし、言語設定は日付関数の出力に影響します。 適用なし 該当なし

日付と時刻の値を検証する関数

機能 構文 戻り値 戻り値のデータ型 決定性
ISDATE ISDATE ( expression ) datetime または smalldatetime の入力式の日付値または時刻値が有効であるかどうかを調べます。 int ISDATE は、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくないときに、CONVERT 関数と共に使用される場合にのみ決定論的になります。

日付と時刻に関連する記事

[アーティクル] 説明
FORMAT 指定した形式とオプションのカルチャを使用して書式設定された値を返します。 文字列としての日付/時刻と数値のロケール依存の書式指定には FORMAT 関数を使用します。
CAST および CONVERT (Transact-SQL) 文字列リテラルとその他の日時形式間の、日付と時刻の値の変換に関する情報を提供します。
国際化に対応した Transact-SQL ステートメントの記述 Transact-SQL ステートメントを使用するデータベースやデータベース アプリケーションをある言語から別の言語に移行するためのガイドライン、または複数の言語をサポートするガイドラインを提供します。
ODBC スカラー関数 (Transact-SQL) Transact-SQL ステートメントで使用できる ODBC スカラー関数に関する情報を提供します。 これには、ODBC の日付および時刻の関数が含まれます。
AT TIME ZONE (Transact-SQL) タイム ゾーンの変換を提供します。

関連項目