time (Transact-SQL)
1 日の時刻を定義します。時刻は 24 時間形式でタイム ゾーンは認識されません。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。
time の説明
プロパティ |
値 |
---|---|
構文 |
time [ (fractional second precision) ] |
使用法 |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
fractional seconds precision |
秒の小数点以下の有効桁数を指定します。 0 ~ 7 の整数を指定できます。 既定の有効桁数は 7 (100ns) です。 |
使用法 |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
既定の文字列リテラル形式 (下位のクライアントに使用) |
hh:mm:ss[.nnnnnnn] 詳細については、「日時データの使用」の「下位クライアントの下位互換性」セクションを参照してください。 |
範囲 |
00:00:00.0000000 ~ 23:59:59.9999999 |
要素範囲 |
hh は、0 ~ 23 の時を表す 2 桁の数字です。 mm は、0 ~ 59 の分を表す 2 桁の数字です。 ss は、0 ~ 59 の秒を表す 2 桁の数字です。 n* は、秒の有効桁数を表す 0 ~ 7 桁の数字です (0 ~ 9999999)。 |
文字長 |
8 文字 (hh:mm:ss) 以上、16 文字 (hh:mm:ss.nnnnnnn) 以下 |
有効桁数、小数点以下桁数 (ユーザーは小数点以下桁数のみ指定) |
指定した小数点以下桁数結果 (有効桁数、小数点以下桁数)列長 (バイト単位)1 秒未満の 秒の 有効桁数
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7
|
ストレージのサイズ |
既定では 5 バイト固定 (秒部分の既定の有効桁数は 100ns) です。 |
精度 |
100 ナノ秒 |
既定値 |
00:00:00 この値は、date から datetime2 または datetimeoffset への暗黙的な変換で、付加的な時刻要素として使用されます。 |
ユーザー定義の 1 秒未満の秒の有効桁数 |
あり |
タイム ゾーン オフセットへの対応と保持 |
なし |
夏時間への対応 |
なし |
time でサポートされる文字列リテラル形式
次の表は、time データ型に使用できる有効な文字列リテラル形式を示しています。
SQL Server |
説明 |
---|---|
hh:mm[:ss][:fractional seconds][AM][PM] hh:mm[:ss][.fractional seconds][AM][PM] hhAM[PM] hh AM[PM] |
AM を指定したかどうかに関係なく、時刻値 0 は午前 0 時を表します。時刻値が 0 のときに PM を指定することはできません。 AM と PM のどちらも指定していない場合、01 から 11 までの時刻値は午前の時刻を表します。これらの値は、AM を指定した場合も午前の時刻を表します。PM を指定すると、午後の時刻を表します。 AM と PM のどちらも指定していない場合、時刻値 12 は正午を表します。AM を指定すると、午前 0 時を表します。PM を指定すると、正午を表します。たとえば、12:01 という値は、12:01 PM では正午を 1 分過ぎた時刻、12:01 AM では午前 0 時を 1 分過ぎた時刻を表します。12:01 AM と指定しても、00:01 または 00:01 AM と指定した場合と同じ時刻を表します。 13 から 23 までの時刻値は、AM または PM を指定していなくても、午後の時刻を表します。また、PM を指定した場合も午後の時刻を表します。時刻値が 13 から 23 までの場合、AM を指定することはできません。 24 という時刻値は無効です。午前 0 時を表すには、12:00 AM または 00:00 とします。 ミリ秒の前には、コロン (:) またはピリオド (.) を付けます。コロンを付けると、後続の値は、1000 分の 1 秒単位になります。ピリオドを付けると、数字が 1 桁なら 10 分の 1 秒単位に、2 桁なら 100 分の 1 秒単位に、3 桁なら 1000 分の 1 秒単位になります。たとえば、"12:30:20:1" は 12 時 30 分 20 秒を 1000 分の 1 秒過ぎた時刻を表し、"12:30:20.1" は 12 時 30 分 20 秒を 10 分の 1 秒過ぎた時刻を表します。 |
ISO 8601 |
注 |
---|---|
hh:mm:ss hh:mm[:ss][.fractional seconds] |
|
ODBC |
注 |
---|---|
{t 'hh:mm:ss[.fractional seconds]'} |
ODBC API 固有です。 SQL Server 2008 でも SQL Server 2005 と同様に機能します。 |
time の ANSI および ISO 8601 への準拠
ISO 8601 (5.3.2 および 5.3) では、午前 0 時を表す時刻値 24 や、59 を超えるうるう秒の使用が定義されていますが、こうした用法は、下位互換性および既存の日付時刻型との一貫性を保つためサポート対象外となります。これらは、SQL 2003 標準では定義されていません。
下位クライアントに使用される既定の文字列リテラル形式は、hh:mm:ss[.nnnnnnn] として定義されている SQL 標準形式に準拠しています。この形式は、1 秒未満の秒を除き、TIME に対する ISO 8601 の定義と似ています。
例
A. 日付および時刻データ型の比較
次の例では、文字列をそれぞれの date および time データ型にキャストした結果を比較します。
SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset';
データ型 |
出力 |
---|---|
time |
12:35:29. 1234567 |
date |
2007-05-08 |
smalldatetime |
2007-05-08 12:35:00 |
datetime |
2007-05-08 12:35:29.123 |
datetime2 |
2007-05-08 12:35:29. 1234567 |
datetimeoffset |
2007-05-08 12:35:29.1234567 +12:15 |
B. 有効な時刻文字列リテラルを time(7) 列に挿入する
次の表は、time(7) 型の列に挿入可能な各種の文字列リテラルと、その列に格納される値を示しています。
各種の文字列リテラル形式 |
挿入する文字列リテラル |
格納される time(7) 値 |
説明 |
---|---|---|---|
SQL Server |
'01:01:01:123AM' |
01:01:01.1230000 |
1 秒未満の秒の有効桁数の前にコロン (:) を付けた場合、小数点以下桁数が 3 桁を超えると、エラーが生成されます。 |
SQL Server |
'01:01:01.1234567 AM' |
01:01:01.1234567 |
AM または PM を指定した場合、時刻は 24 時間形式で格納され、リテラルの AM または PM は格納されません。 |
SQL Server |
'01:01:01.1234567 PM' |
13:01:01.1234567 |
AM または PM を指定した場合、時刻は 24 時間形式で格納され、リテラルの AM または PM は格納されません。 |
SQL Server |
'01:01:01.1234567PM' |
13:01:01.1234567 |
AM または PM の前の空白は省略できます。 |
SQL Server |
'01AM' |
01:00:00.0000000 |
時だけを指定した場合、他のすべての値は 0 になります。 |
SQL Server |
'01 AM' |
01:00:00.0000000 |
AM または PM の前の空白は省略できます。 |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
1 秒未満の秒の有効桁数を指定しなかった場合、データ型で定義されている各桁が 0 になります。 |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
ISO 8601 に準拠するには、AM または PM を付けずに、24 時間形式を使用します。 |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
TZD (Time Zone Difference) は省略可能で、入力はできますが保存されません。 |
C. date 型と time 型のそれぞれの列に対して時間の文字列リテラルを挿入する
次の表の 1 列目は、2 列目に示した date 型または time 型のデータベース テーブル列に挿入する時間の文字列リテラルを示しています。3 列目は、データベース テーブル列に格納される値を示しています。
挿入する文字列リテラル |
列のデータ型 |
列に格納される値 |
説明 |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
1 秒未満の秒の有効桁数が、列に指定された値を超えた場合、エラーは生成せずに文字列が切り詰められます。 |
'2007-05-07' |
date |
NULL |
time 値により、INSERT ステートメントが失敗します。 |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
1 秒未満の秒の有効桁数の値によって、INSERT ステートメントが失敗します。 |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
秒の有効桁数が 3 桁を超えると、INSERT ステートメントが失敗します。 |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
1 秒未満の秒の有効桁数が、列に指定された値を超えた場合、エラーは生成せずに文字列が切り詰められます。 |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
1 秒未満の秒の有効桁数が、列に指定された値を超えた場合、エラーは生成せずに文字列が切り詰められます。 |