smalldatetime (Transact-SQL)
適用於:SQL Server
Azure SQL Database
Azure SQL 受控實例
Azure Synapse Analytics
Analytics Platform System
Microsoft Fabric 中的 SQL Database
定義與當日時間結合的日期。 時間是以24小時為基礎,而秒一律為零(:00
),且沒有小數秒。
注意
使用 時間、日期、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 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 會拒絕所有無法辨識為日期或時間的值。 如需搭配日期和時間數據使用 CAST
和 CONVERT
函式的相關信息,請參閱 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 值
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 |