次の方法で共有


smalldatetime (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric

日付を時刻と組み合わせて定義します。 時刻は 24 時間の日に基づいており、秒は常に 0 (:00) で、秒の小数部は使用しません。

Note

時間日付datetime2、および datetimeoffset データ型を使用して、新しい作業を行います。 これらの型は、移植性が高まるため、SQL 標準に合わせて調整されます。 timedatetime2datetimeoffset は秒の有効桁数が増えています。 datetimeoffset グローバルに配置されるアプリケーション向けにタイム ゾーンのサポートを提供します。

smalldatetime の説明

プロパティ
構文 smalldatetime
使用状況の DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
既定の文字列リテラル形式
(下位クライアントに使用)
適用なし
日付範囲の 2079-06-06 による 1900-01-01

1900 年 1 月 1 日から 2079 年 6 月 6 日
時間範囲の 23:59:59 による 00:00:00

2024-05-09 23:59:592024-05-10 00:00:00 に丸める
要素の範囲 yyyy は 4 桁で、1900 ~ 2079 の範囲で、1 年を表します。

MM は 2 桁で、01 から 12 までの範囲で、指定した年の月を表します。

dd は 2 桁で、指定した月の日を表す月に応じて 01 から 31 までの範囲です。

HH は 2 桁で、00 から 23 の範囲で、時間を表します。

mm は、分を表す 00 から 59 までの 2 桁の数字です。

ss は、00 から 59 の範囲の 2 桁の数字で、2 番目を表します。 29.998 秒以下の値は、最も近い分に切り捨てられます。 29.999 秒以上の値は、最も近い分に切り上げられます。
文字の長さ 最大 19 文字
ストレージ サイズの 4 バイト、固定
精度 1 分
既定値 1900-01-01 00:00:00
予定表 の グレゴリオ暦

(完全な年の範囲は含まれません。)
ユーザー定義の秒の小数部の有効桁数 いいえ
タイム ゾーン オフセット対応と保持 いいえ
夏時間対応の いいえ

ANSI および ISO 8601 コンプライアンス

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

日付と時刻のデータを変換する

日付と時刻のデータ型に変換する場合、SQL Server で日付または時刻と認識できない値はすべて拒否されます。 日付と時刻のデータで および 関数を使用する方法については、CAST および CONVERTの を参照してください。

smalldatetime を他の日付と時刻の型に変換する

ここでは、smalldatetime データ型が他の日付/時刻データ型に変換される場合の処理について説明します。

date への変換の場合は、年、月、日がコピーされます。 次のコードは、smalldatetime 値を 日付 値に変換した結果を示しています。

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

結果セットを次に示します。

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

time(n)に変換すると、時間、分、秒がコピーされます。 秒の小数部は 0に設定されます。 次のコードは、smalldatetime 値を time(4) 値に変換した結果を示しています。

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

結果セットを次に示します。

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

datetime に変換する場合は、smalldatetime 値が datetime 値にコピーされます。 秒の小数部は 0に設定されます。 次のコードは、smalldatetime 値を datetime 値に変換した結果を示しています。

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

結果セットを次に示します。

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

datetimeoffset(n)への変換では、smalldatetime 値が datetimeoffset(n) 値にコピーされます。 秒の小数部は 0に設定され、タイム ゾーン オフセットは +00:0に設定されます。 次のコードは、smalldatetime 値を datetimeoffset(4) 値に変換した結果を示しています。

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

結果セットを次に示します。

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

datetime2(n) に変換する場合は、smalldatetime 値が datetime2(n) 値にコピーされます。 秒の小数部は 0に設定されます。 次のコードは、smalldatetime 値を datetime2(4) 値に変換した結果を示しています。

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

結果セットを次に示します。

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

A. 秒の文字列リテラルを smalldatetime にキャストする

次の例では、文字列リテラルの秒から smalldatetimeへの変換を比較します。

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
入力 Output
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. 日付と時刻のデータ型を比較する

次の例では、文字列をそれぞれの date および time データ型にキャストした結果を比較します。

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
データ型 Output
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15