smalldatetime (Transact-SQL)

日付を時刻と組み合わせて定義します。 時刻は 24 時間制です。秒数は常にゼロ (:00) で、1 秒未満の秒を持ちません。

注意

新しい作業項目に対しては、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

カレンダー

グレゴリオ暦

(完全な年の範囲は含まれません。)

ユーザー定義の 1 秒未満の秒の有効桁数

なし

タイム ゾーン オフセットへの対応と保持

なし

夏時間への対応

なし

ANSI および ISO 8601 への準拠

smalldatetime は ANSI または ISO 8601 に準拠していません。

日付型データと時刻型データの変換

data 型と time 型に変換する場合、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);

入力

出力

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. 日付/時刻データ型を比較する

次の例では、文字列をそれぞれの日付/時刻データ型にキャストした結果を比較します。

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)