smalldatetime (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

日付を時刻と組み合わせて定義します。 時間は 24 時制とし、秒は常にゼロ (: 00) にし、秒の小数部は使用しません。

Note

新しい作業には、timedatedatetime2datetimeoffsetデータタイプを使用してください。 これらの型は、SQL 標準に準拠しています。 これらの型は、移植性がより高いです。 timedatetime2datetimeoffset は秒の有効桁数が増えています。 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

関連項目

CAST および CONVERT (Transact-SQL)