smalldatetime (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
日付を時刻と組み合わせて定義します。 時間は 24 時制とし、秒は常にゼロ (: 00) にし、秒の小数部は使用しません。
Note
新しい作業には、time、date、datetime2、datetimeoffsetデータタイプを使用してください。 これらの型は、SQL 標準に準拠しています。 これらの型は、移植性がより高いです。 time、datetime2、datetimeoffset は秒の有効桁数が増えています。 datetimeoffset グローバルに配置されるアプリケーション向けにタイム ゾーンのサポートを提供します。
smalldatetime の説明
プロパティ | 値 |
---|---|
構文 | smalldatetime |
使用法 | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table1 ( Column1 smalldatetime ) |
既定の文字列リテラル形式 (下位クライアントに使用) |
適用なし |
期間 | 1900-01-01 から 2079-06-06 1900 年 1 月 1 日から 2079 年 6 月 6 日 |
時間の範囲 | 00:00:00 から 23:59:59 2007-05-09 23:59:59 は次のように丸められます。 2007-05-10 00:00:00 |
要素範囲 | YYYY は、1900 から 2079 の年を表す 4 桁の数字です。 MM は、指定された年の 01 ~ 12 の月を表す 2 桁の数字です。 DD は、指定された月の (月に応じて) 01 ~ 31 の日を表す 2 桁の数字です。 hh は、00 ~ 23 の時を表す 2 桁の数字です。 mm は、分を表す 00 から 59 の 2 桁の数字です。 ss は、秒を表す 00 から 59 の 2 桁の数字です。 29.998 秒以下の値は、最も近い分に切り捨てられます。 29.999 秒以上の値は、最も近い分に切り上げられます。 |
文字長 | 最大 19 文字 |
ストレージ サイズ | 4 バイト、固定。 |
精度 | 1 分 |
既定値 | 1900-01-01 00:00:00 |
Calendar | グレゴリオ暦 (完全な年の範囲は含まれません。) |
ユーザー定義の 1 秒未満の秒の有効桁数 | いいえ |
タイム ゾーン オフセットへの対応と保持 | いいえ |
夏時間への対応 | いいえ |
ANSI および ISO 8601 への準拠
smalldatetime は ANSI または ISO 8601 に準拠していません。
日付と時刻のデータ型の変換
日付と時刻のデータ型に変換する場合、SQL Server で日付または時刻と認識できない値はすべて拒否されます。 CAST 関数および CONVERT 関数で日付と時刻のデータを使用する方法については、「CAST および CONVERT (Transact-SQL)」を参照してください。
smalldatetime から他の日付/時刻データ型への変換
ここでは、smalldatetime データ型が他の日付/時刻データ型に変換される場合の処理について説明します。
date への変換の場合は、年、月、日がコピーされます。 次のコードは、smalldatetime
値を date
値に変換した結果を示しています。
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime date
------------------------- ----------
--1955-12-13 12:43:00 1955-12-13
--
--(1 row(s) affected)
time(n) への変換では、時、分、および秒がコピーされます。 秒未満の時間は 0 に設定されます。 次のコードは、smalldatetime
値を time(4)
値に変換した結果を示しています。
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime time
------------------------- -------------
--1955-12-13 12:43:00 12:43:00.0000
--
--(1 row(s) affected)
datetime に変換する場合は、smalldatetime 値が datetime 値にコピーされます。 秒未満の時間は 0 に設定されます。 次のコードは、smalldatetime
値を datetime
値に変換した結果を示しています。
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime datetime
------------------------- -----------------------
--1955-12-13 12:43:00 1955-12-13 12:43:00.000
--
--(1 row(s) affected)
datetimeoffset(n) に変換する場合は、smalldatetime 値が datetimeoffset(n) 値にコピーされます。 秒の小数部は 0 に設定され、タイム ゾーン オフセットは + 00:0 に設定されます。 次のコードは、smalldatetime
値を datetimeoffset(4)
値に変換した結果を示しています。
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00 1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)
datetime2(n) に変換する場合は、smalldatetime 値が datetime2(n) 値にコピーされます。 秒未満の時間は 0 に設定されます。 次のコードは、smalldatetime
値を datetime2(4)
値に変換した結果を示しています。
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00 1955-12-13 12:43:00.0000
--
--(1 row(s) affected)
例
A. 秒を含む文字列リテラルを smalldatetime にキャストする
次の例では、文字列リテラル内の秒の smalldatetime
への変換を比較します。
SELECT
CAST('2007-05-08 12:35:29' AS smalldatetime)
,CAST('2007-05-08 12:35:30' AS smalldatetime)
,CAST('2007-05-08 12:59:59.998' AS smalldatetime);
入力 | Output |
---|---|
2007-05-08 12:35:29 | 2007-05-08 12:35:00 |
2007-05-08 12:35:30 | 2007-05-08 12:36:00 |
2007-05-08 12:59:59.998 | 2007-05-08 13:00:00 |
B. date と time のデータ型を比較する
次の例では、文字列をそれぞれの 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 |