使用 [延長的日期/時間] 資料類型

套用到
Microsoft 365 Access Access 2024 Access 2021

[延長的日期/時間] 資料類型會儲存日期與時間資訊,且類似於 [日期/時間] 資料類型,但它提供較大的日期範圍、較高的小數精準度,以及與 SQL Server datetime2 日期類型的相容性。 當您將 Access 資料匯入或連結至 SQL Server 時,您可以將 Access [延長的日期/時間] 欄位一致地對應至 SQL Server datetime2 資料行。 如需詳細資訊,請參閱 datetime2 (Transact-SQL)

日期/時間 延伸範圍 警告 當您在 Access 中根據 [日期/時間] 延伸資料類型建立運算式並使用日期/時間函數時,可能會失去計算的精確度,或遇到其他結果問題。 我們已發現這個問題,並計畫在即將推出的版本中加強運算式和函數的支援。 如需因應措施,您可以建立傳遞查詢,以使用同等 SQL Server 運算式和日期/時間函數。 如需詳細資訊,請參閱比較 Access SQL 和 SQL Server TSQL

本文內容

比較 [日期/時間] 及 [延長的日期/時間] 資料類型 使用 [延長的日期/時間] 資料類型 回溯相容性考量 使用 [延長的日期/時間] 資料類型作為 VBA 中的字串

比較 [日期/時間] 及 [延長的日期/時間] 資料類型

下表摘要說明兩種資料類型之間的重要差異。

屬性 日期/時間 延長的日期/時間
最小值 100-01-01 00:00:00 0001-01-01 00:00:00
最大值 9999-12-31 23:59:59.999 9999-12-31 23:59:59.9999999
準確性 0.001 秒 1 奈秒
大小 雙精確度浮點 42 位元組的編碼字串

頁面頂端

使用 [延長的日期/時間] 資料類型

下列資訊說明重要的使用注意事項。

資料表設計檢視 若要利用更大的資料範圍和更高的精確度,您可以將欄位新增至 Access 資料表。 您也可以在 [資料表設計] 檢視中,將 [日期/時間] 轉換為 [延長的日期/時間] 資料類型。 同時也支援使用這個資料類型做為主要欄位。 如需詳細資訊,請參閱建立資料保和新增欄位

輸入日期和時間 輸入日期和時間值類似於 [日期/時間] 資料類型,但您也可以輸入小數奈秒。 例如:

  • 項目格式:mm/dd/yyyy hh:mm:ss.nnnnnnn
  • 範例:06/15/1215 09:25:3.234

如果有超過 7 個小數奈秒,則會將它們捨入為 7 位數。 若要控制小數奈秒的顯示,請開啟 [表格],在功能區上選取 [欄位],然後在 [格式設定 ] 群組中,選取 [ 增加小數位數按鈕] 影像[減少小數位數按鈕] 影像

格式設定 [日期/時間] 和 [日期/時間] 延伸資料類型都使用類似的一般 日期完整日期中日期簡短日期完整時間中時間簡短時間 的標準格式字串,而且兩者都支援自訂格式設定。 針對 [延長的日期/時間] 資料類型,時間型標準格式也支援奈秒的小數精確度。 [延長的日期/時間] 資料類型的格式設定預設為 [一般日期]和 [長時間] 格式,並遵循 [Windows 地區設定] 中所指定的選項。 您也可以使用 [小數位數] 屬性來指定小數點右邊的位數 (1-7),以控制小數精確度的格式設定。

連結與匯入您也可以連結至具有對應資料類型的資料庫或從中匯入,例如 SQL Server datetime2 資料類型。 支援 SQL Server 版本 2014 或更新版本的資料庫。 [延長的日期/時間] 資料類型需要使用 Microsoft ODBC Driver for SQL Server 11 或更新版本。 建議您使用適用於 SQL Server 的 Microsoft ODBC 驅動程式 13.1。 也支援使用 OLE DB。 如需詳細資訊,請參閱 ODBC 日期和時間改良功能的資料類型支援 (OLE DB) 使用增強的日期和時間功能

表單和報表 您可以將 [日期/時間] 延伸資料類型新增至表單或報表。 在表單中,您可以使用 [日期選擇器] 和 [輸入遮罩] 來輸入具有較大範圍的日期,但不能輸入奈秒的小數精準度。

運算式支援 日期/時間延伸資料類型支援 SQL 彙總函數 和運算式評估。 例如,使用 LoggedDateTime 做為含有 [延長的日期/時間] 資料類型的欄位:

工作 範例 結果
尋找最小值 Min(LoggedDateTime) 範圍內的最早日期和時間
擷取月份 Month(LoggedDateTime) 月份名稱,例如一月
新增一天 [LoggedDateTime]+1 星期二會變成星期三

頁面頂端

回溯相容性考量

[延長的日期/時間] 延伸資料類型與舊版 Microsoft Access 不相容。 如果在本機 Access 資料表中使用該類型,則不包含該功能的 Access 版本將無法開啟資料庫。

您可以使用目前 資料庫 存取選項啟用或停用連結和匯入作業的日期/時間延伸資料類型: 支援連結/連結資料表的日期/時間延伸資料類型。 如需詳細資訊,請參閱設定目前資料庫的使用者選項

頁面頂端

使用 [延長的日期/時間] 資料類型作為 VBA 中的字串

下列 VBA 範例使用 DAO 方法,根據下表顯示、輸入及評估 [延長的日期/時間] 資料類型。

識別碼 DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001

資料表名稱: DTETable
ID 資料類型: 自動編號
DTEData 資料類型: 日期/時間延長
DTData 資料類型: 日期/時間

範例:顯示日期和時間

下列範例會顯示日期和時間。 所用的格式為 24小時制 mm/dd/yyyy hh:mm:ss.nnnnnnn。 無法自訂格式。


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
Do Until rs.EOF
    Debug.Print rs!DTETable
    rs.MoveNext
Loop

結果 Access 顯示器: 01/01/0002 01:01:03.1234567。

範例:輸入日期和時間

下列範例會使用字串格式輸入日期和時間。 支援所有標準的日期和時間格式。


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
With CurrentDb.OpenRecordset("DTETable")
    .AddNew
    ![DTEData] = "1/1/9999 1:1:1.0123 AM"
    ![DTData] = #1/1/2001#
    .Update
End With

結果 Access 會新增 (識別碼 = 2) 的新資料列:

識別碼 DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001
2 1/1/9999 1:01:01.0123000 AM 1/1/2001

範例:評估查詢運算式

下列範例使用 [Day 函數],從日期和時間欄位擷取天數位。


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT Day(DTEData) as day FROM DTETable")
Do Until rs.EOF
    Debug.Print "The day of the month is: "&rs!day
    rs.MoveNext
Loop

結果 Access 會顯示:

月份中的日期為: 1
月份中的日期為: 1

在查詢運算式中使用延長的日期/時間的函數

下列函數可搭配查詢運算式中的 [日期/時間延長] 使用:
​​​​​​​
年、月、工作日、日、小時、分鐘、秒、DateAdd、DateDiff 和 DatePart。

此外,還有部分函數的擴充版本無法使用引數類型來判斷計算應產生日期/時間延伸值。 例如:

DateValueExtended、TimeValueExtended、DateSerialExtended、TimeSerialExtended、NowExtended、DateExtended、DateTimeExtended 和 TimeExtended。

這些函數的運作方式與結尾沒有「Extended」的函數相同,但會傳回 [日期/時間] 延伸值,而不是 [日期/時間] 值。

請注意,尚未修改 VBA,VBA 程式碼中無法辨識新函數,且現有函數無法搭配日期/時間延伸值使用。

範例

原始查詢:


Select DateValue([OrderDate]) AS OrderDateOnly_DateValue

, Format([OrderDate],"Short Date") AS OrderDateOnly_Format

From tblOrders

現在,將 DateValue ([OrderDate]) 變更為 DateValueExtended ([OrderDate]) ,這樣會修正第一個運算式。

請注意,Access 不會針對日期/時間延伸欄處理 Format 函數;您只需設定欄位的 Format 屬性即可。

因此,如果您使用:


SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate

FROM Table1;

並將第二列的 Format 屬性設置為“Short Date”,您將獲得您想要的結果。

頁面頂端

另請參閱

資料類型與欄位屬性簡介

設定日期和時間欄位的格式

建立或刪除日期和時間欄位