共用方式為


smalldatetime (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控實例Azure Synapse AnalyticsAnalytics Platform SystemMicrosoft Fabric 中的 SQL Database

定義與當日時間結合的日期。 時間是以24小時為基礎,而秒一律為零(:00),且沒有小數秒。

注意

使用 時間日期datetime2,以及 datetimeoffset 數據類型進行新工作。 這些類型與 SQL 標準一致,因為它們更容易移植。 timedatetime2datetimeoffset 提供更多秒數有效位數。 datetimeoffset 可為全域部署的應用程式提供時區支援。

smalldatetime 描述

屬性
語法 smalldatetime
使用量 DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
預設字串常值格式
(用於下層用戶端)
不適用
日期範圍 1900-01-012079-06-06

1900 年 1 月 1 日到 2079 年 6 月 6 日
時間範圍 00:00:0023:59:59

2024-05-09 23:59:59 四捨五入至 2024-05-10 00:00:00
專案範圍 yyyy 是四位數,範圍從 1900 到 2079,代表一年。

MM 是兩位數,範圍從 01 到 12,代表指定年份中的月份。

dd 是兩位數,範圍從 01 到 31,視月份而定,代表指定月份的一天。

HH 是兩位數,範圍從 00 到 23,代表小時。

mm 是兩位數,範圍從 00 到 59,代表分鐘。

ss 是兩位數,範圍從 00 到 59,代表第二個數位。 29.998 秒或以下值會無條件捨去到最接近的分鐘。 29.999 秒或以上值會無條件進位到最接近的分鐘。
字元長度 19 個位置上限
記憶體大小 4 個字節,固定
精確度 一分鐘
預設值 1900-01-01 00:00:00
行事曆 西曆

(不含年份的完整範圍)。
用戶定義的小數秒精確度
時區位移感知與保留
日光節約感知

ANSI 和 ISO 8601 合規性

smalldatetime 不符合 ANSI 或 ISO 8601 標準。

轉換日期和時間數據

當您轉換成日期與時間資料類型時,SQL Server 會拒絕所有無法辨識為日期或時間的值。 如需搭配日期和時間數據使用 CASTCONVERT 函式的相關信息,請參閱 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(nsmalldatetime 值會複製到 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);
輸入 輸出
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';
資料類型 輸出
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