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

このトピックの以下のセクションでは、日付と時刻に関連して Transact-SQL が備えているすべてのデータ型および関数について概要を紹介します。

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

  • 日付と時刻関数

    • システムの日付と時刻値を取得する関数

    • 日付と時刻の要素を取得する関数

    • 日付と時刻の要素からその値を取得する関数

    • 日付や時刻の差を取得する関数

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

    • セッションの形式を設定または取得する関数

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

  • 日付と時刻に関連したトピック

日付および時刻データ型

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

データ型

形式

範囲

精度

ストレージ サイズ (バイト単位)

ユーザー定義の、秒の小数部の有効桁数

タイム ゾーン オフセット

time

hh:mm:ss[. nnnnnnn]

00:00:00.0000000 ~ 23:59:59.9999999

100 ナノ秒

3 ~ 5

不可

date

YYYY-MM-DD

0001-01-01 ~ 9999-12-31

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

システムの日付と時刻値を取得する関数

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

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

SQL Server 2012 は、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

非決定的

日付と時刻の要素を取得する関数

関数

構文

戻り値

戻り値の型

決定性

DATENAME

DATENAME ( datepart , date )

指定された日付について、特定の datepart を表す文字列を返します。

nvarchar

非決定的

DATEPART

DATEPART ( datepart , date )

指定された date の特定の datepart を表す整数を返します。

int

非決定的

DAY

DAY ( date )

指定された date の日の部分を表す整数を返します。

int

決定的

MONTH

MONTH ( date )

指定された date の月の部分を表す整数を返します。

int

決定的

YEAR

YEAR ( date )

指定された date の年の部分を表す整数を返します。

int

決定的

日付と時刻の要素からその値を取得する関数

関数

構文

戻り値

戻り値の型

決定性

DATEFROMPARTS

DATEFROMPARTS ( year, month, day )

指定された年、月、および日を表す date 値を返します。

date

決定的

DATETIME2FROMPARTS

DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )

指定された有効桁数を使用して、指定された日付と時刻を表す datetime2 値を返します。

datetime2 ( precision )

決定的

DATETIMEFROMPARTS

DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds )

指定された日付と時刻を表す datetime 値を返します。

datetime

決定的

DATETIMEOFFSETFROMPARTS

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )

指定されたオフセットおよび有効桁数を使用して、指定された日付と時刻を表す datetimeoffset 値を返します。

datetime ( precision )

決定的

SMALLDATETIMEFROMPARTS

SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

指定された日付と時刻を表す smalldatetime 値を返します。

smalldatetime

決定的

TIMEFROMPARTS

TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )

指定された有効桁数を使用して、指定された時刻を表す time 値を返します。

time ( precision )

決定的

日付や時刻の差を取得する関数

関数

構文

戻り値

戻り値の型

決定性

DATEDIFF

DATEDIFF ( datepart , startdate , enddate )

指定された 2 つの日付間の差を、日付または時刻の datepart 単位で返します。

int

決定的

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

関数

構文

戻り値

戻り値の型

決定性

DATEADD

DATEADD (datepart , number , date )

date の datepart に特定の期間を加えた新しい datetime 型の値を返します。

date 引数のデータ型

決定的

EOMONTH

EOMONTH ( start_date [, month_to_add ] )

オプションのオフセットを使用して、指定された日付を含んでいる月の最後の日付を返します。

戻り値の型は start_date 型または datetime2(7) 型です。

決定的

SWITCHOFFSET

SWITCHOFFSET (DATETIMEOFFSET , time_zone)

SWITCHOFFSET は、DATETIMEOFFSET の値のタイム ゾーン オフセットを変更し、UTC 値を保持します。

datetimeoffset の有効桁数を持つDATETIMEOFFSET

決定的

TODATETIMEOFFSET

TODATETIMEOFFSET (expression , time_zone)

TODATETIMEOFFSET は、datetime2 値を datetimeoffset 値に変換します。 datetime2 値は、指定された time_zone のローカル時刻で解釈されます。

datetime 引数の有効桁数を持つ datetimeoffset

決定的

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

関数

構文

戻り値

戻り値の型

決定性

@@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 関数と共に使用され、CONVERT スタイル パラメーターが指定されており、スタイルが 0、100、9、または 109 と等しくない場合にのみ決定的関数になります。

日付と時刻に関連したトピック

トピック

説明

CAST および CONVERT (Transact-SQL)

文字列リテラルとその他の日付/時刻形式間の変換に関する情報を提供します。

国際化に対応した Transact-SQL ステートメントの記述

Transact-SQL ステートメントを使用するデータベースやデータベース アプリケーションをある言語から別の言語に移行するためのガイドラインを提供します。

ODBC スカラー関数 (Transact-SQL)

Transact-SQL ステートメントで使用できる ODBC スカラー関数に関する情報を提供します。 これには、ODBC の日付および時刻の関数が含まれます。

関連項目

参照

組み込み関数 (Transact-SQL)

データ型 (Transact-SQL)