添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

適用於: Microsoft Fabric 中 Microsoft Fabric 倉儲中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點

定義一天的時間。 這個時間不含時區感知,而且是以 24 小時制為基礎。

Informatica 資訊會提供給使用 Informatica Connector 的 PDW 客戶。

time 描述

毫秒小數位數 指定秒鐘小數部分的位數。

這可以是介於 0 至 7 之間的整數。 針對 Informatica,這可以是介於 0 至 3 之間的整數。

預設的小數位數是 7 (100 毫秒)。

在 Microsoft Fabric 中,這可以是從 0 到 6 的整數,沒有預設值。 必須在 Microsoft Fabric 中指定有效位數。 預設的字串常值格式

(用於下層用戶端) Informatica 為 hh:mm:ss[.nnnnnnn])

如需詳細資訊,請參閱 下層用戶端的回溯相容性 一節。 00:00:00.0000000 到 23:59:59.9999999 (Informatica 為 00:00:00.000 到 23:59:59.999) hh 是代表小時的兩位數,範圍介於 0 至 23 之間。

mm 是代表分鐘的兩位數,範圍介於 0 至 59 之間。

ss 是代表秒鐘的兩位數,範圍介於 0 至 59 之間。

n* 是代表小數秒數的零至七位數,範圍介於 0 至 9999999 之間。 針對 Informatica,n* 為 0 到 3 位數,範圍為 0 至 999。 最小 8 個位置 (hh:mm:ss),最大 16 個位置 (hh:mm:ss.nnnnnnn)。 針對 Informatica,最大值為 12 (hh:mm:ss.nnn)。 有效位數,小數位數

(使用者僅指定小數位數) 請參閱下表。 儲存體大小 固定的 5 個位元組是具有預設 100ns 小數秒數有效位數的預設值。 在 Informatica 中,預設為 4 個位元組、固定,並具有預設 1ms 毫秒精確度。 100 奈秒 (Informatica 中為 1 毫秒) 00:00:00

這個值會用於從 date 隱含轉換成 datetime2 datetimeoffset 的附加時間部分。 使用者自訂的小數秒數有效位數 時區位移感知和保留 日光節約感知 hh:mm[:ss][:小數秒數][AM][PM]

hh:mm[:ss][.小數秒數][AM][PM]

hhAM[PM]

hh AM[PM] 無論您是否指定 AM,只要小時的值為 0 就表示午夜之後 (AM) 的小時。 小時等於 0 時,無法指定 PM。

如果沒有指定 AM 或 PM,小時值 01 至 11 就代表正午之前的小時。 指定為 AM 時,這些值就代表正午之前的小時。 如果指定為 PM,這些值就代表正午之後的小時。

如果沒有指定 AM 或 PM,小時值 12 就代表從正午開始的小時。 如果指定為 AM,此值就代表從午夜開始的小時。 如果指定為 PM,此值就代表從正午開始的小時。 例如,12:01 就是正午之後的 1 分鐘,也就是 12:01 PM,而 12:01 AM 則是午夜之後一分鐘。 指定為 12:01 AM 與指定為 00:01 或 00:01 AM 是相同的。

如果未指定 AM 或 PM,從 13 到 23 的小時值就代表正午之後的小時。 如果指定為 PM,這些值也代表正午之後的小時。 當小時值為 13 至 23 時,則無法指定為 AM。

24 小時值無效。 若要表示午夜,請使用 12: 00 AM 或 00:00。

毫秒前可以用冒號 (:) 或句號 (.)。 如果使用冒號,數字是指千分之一秒。 如果使用句號,一位數代表十分之一秒、二位數代表百分之一秒,而三位數代表千分之一秒。 例如,12:30:20:1 表示 12:30 過 20 又千分之一秒;12:30:20.1 表示 12:30 過 20 又十分之一秒。

符合 ANSI 和 ISO 8601 標準

為了達成回溯相容並與現有日期和時間類型一致,因此不支援使用 24 小時制來代表午夜和超過 59 的閏秒 (如 ISO 8601 (5.3.2 和 5.3) 所定義)。

預設字串常值格式 (用於下層用戶端) 將會符合 SQL 標準格式 (定義為 hh:mm:ss[.nnnnnnn])。 這種格式與 TIME 的 ISO 8601 定義很相似 (不含小數秒數)。

下層用戶端的回溯相容性

有些下層用戶端不支援 time date datetime2 datetimeoffset 資料類型。 下表顯示上層 SQL Server 執行個體與下層用戶端之間的類型對應。

SQL Server 資料類型 傳遞至下層用戶端的預設字串常值格式 下層 ODBC 下層 OLEDB 下層 JDBC 下層 SQLCLIENT YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm SQL_WVARCHAR 或 SQL_VARCHAR DBTYPE_WSTR 或 DBTYPE_STR Java.sql.String 字串或 SqString

轉換日期和時間資料

當您轉換成日期與時間資料類型時,SQL Server 會拒絕所有無法辨識為日期或時間的值。 如需搭配日期和時間資料使用 CAST 及 CONVERT 函數的詳細資訊,請參閱 CAST 和 CONVERT (Transact-SQL)

將 time(n) 資料類型轉換成其他日期與時間類型

本節描述當 time 資料類型轉換成其他日期和時間資料類型時,可能發生的狀況。

當轉換成 time(n) 時,時、分和秒都會複製。 當目標有效位數小於來源有效位數時,毫秒將會四捨五入,以配合目標有效位數。 下列範例顯示將 time(4) 值轉換成 time(3) 值的結果。

DECLARE @timeFrom TIME(4) = '12:34:54.1237';
DECLARE @timeTo TIME(3) = @timeFrom;
SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)';

以下為結果集。

time(3)      time(4)  
------------ -------------  
12:34:54.124 12:34:54.1237  

如果轉換目標為 date,轉換會失敗,並引發錯誤訊息 206:「運算元類型衝突:date 與 time 不相容」。

當轉換成 datetime 時,將會複製時、分和秒的值,而且日期元件會設定為 '1900-01-01'。 如果 time(n) 值的毫秒精確度大於三位數,datetime 結果將會被截斷。 下列程式碼顯示將 time(4) 值轉換成 datetime 值的結果。

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime DATETIME = @time;
SELECT @time AS '@time', @datetime AS '@datetime';

以下為結果集。

@time         @datetime  
------------- -----------------------  
12:15:04.1237 1900-01-01 12:15:04.123  

當轉換成 smalldatetime 時,日期會設定為 '1900-01-01',而小時和分鐘值會四捨五入。 秒和小數秒數會設定為 0。 下列程式碼顯示將 time(4) 值轉換成 smalldatetime 值的結果。

顯示分鐘值的四捨五入:

DECLARE @time TIME(4) = '12:15:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';

以下為結果集。

@time            @smalldatetime  
---------------- -----------------------  
12:15:59.9999    1900-01-01 12:16:00--  

顯示小時值的四捨五入:

DECLARE @time TIME(4) = '12:59:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';

以下為結果集。

@time            @smalldatetime  
---------------- -----------------------  
12:59:59.9999    1900-01-01 13:00:00  

當轉換成 datetimeoffset(n) 時,日期會設定為 '1900-01-01',時間則會複製。 時區時差會設定為 +00:00。 如果 time(n) 值的毫秒精確度大於 datetimeoffset(n) 值的有效位數,此值會四捨五入以配合其大小。 下列範例顯示將 time(4) 值轉換成 datetimeoffset(3) 類型的結果。

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetimeoffset DATETIMEOFFSET(3) = @time;
SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset';

以下為結果集。

@time         @datetimeoffset  
------------- ------------------------------  
12:15:04.1237 1900-01-01 12:15:04.124 +00:00  

當轉換成 datetime2(n) 時,日期會設定為 '1900-01-01' 且會複製時間元件,而時區位移會設定為 00:00。 如果 datetime2(n) 值的毫秒精確度大於 time(n) 值,此值將會四捨五入以配合其大小。 下列範例顯示將 time(4) 值轉換成 datetime2(2) 值的結果。

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime2 DATETIME2(3) = @time;
SELECT @datetime2 AS '@datetime2', @time AS '@time';

以下為結果集。

@datetime2              @time  
----------------------- -------------  
1900-01-01 12:15:04.124 12:15:04.1237  

將字串常值轉換為 time(n)

如果整個字串皆是有效的格式,即可從字串常值轉換為日期與時間類型。 否則,就會引發執行階段錯誤。 從日期與時間類型轉換為字串常值的明確轉換不會指定樣式的隱含轉換,一律會採用目前工作階段的預設格式。 下表是字串常值轉換為 time 資料類型的規則。

輸入字串常值 ODBC DATE ODBC 字串常值會對應到 datetime 資料類型。 任何將 ODBC DATETIME 常值指派成 time 類型的作業,皆會根據轉換規則,執行 datetime 與此類型之間的隱含轉換。 ODBC TIME 請參閱上述 ODBC DATE 規則。 ODBC DATETIME 請參閱上述 ODBC DATE 規則。 僅限 DATE 提供預設值。 僅限 TIME 僅限 TIMEZONE 提供預設值。 DATE + TIME 使用輸入字串的 TIME 部分。 DATE + TIMEZONE TIME + TIMEZONE 使用輸入字串的 TIME 部分。 DATE + TIME + TIMEZONE 將使用本機 DATETIME 的 TIME 部分。

A. 比較 date 和 time 資料類型

下列範例會比較將字串轉換成各種 datetime 資料類型的結果。

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';
			即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:https://aka.ms/ContentUserFeedback

提交並檢視相關的意見反應