[延長的日期/時間] 資料類型會儲存日期與時間資訊,且類似於 [日期/時間] 資料類型,但它提供較大的日期範圍、較高的小數精準度,以及與 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 位元組的編碼字串 |
使用 [延長的日期/時間] 資料類型
下列資訊說明重要的使用注意事項。
表格設計檢視 為了利用更寬的資料範圍和更高的精確度,你可以在存取表中新增欄位。 您也可以在 [資料表設計] 檢視中,將 [日期/時間] 轉換為 [延長的日期/時間] 資料類型。 同時也支援使用這個資料類型做為主要欄位。 如需詳細資訊,請參閱建立資料保和新增欄位。
輸入日期與時間 輸入日期和時間值與日期/時間資料類型相似,但你也可以輸入分秒奈秒。 例如:
- 項目格式:mm/dd/yyyy hh:mm:ss.nnnnnnn
- 範例:06/15/1215 09:25:3.234
如果有超過 7 個小數奈秒,則會將它們捨入為 7 位數。 要控制分數奈秒的顯示,請打開表格,在色帶上選擇欄位,並在格式化組中選擇「增加小數
」或「減少小數按鈕
」。
格式 Date/Time 與 Date/Time Extended 資料類型皆使用類似的標準格式字串: General Date、 Long Date、 Medium Date、 Short Date、 Long Time、 Medium Time 及 Short Time ,且皆支援自訂格式。 針對 [延長的日期/時間] 資料類型,時間型標準格式也支援奈秒的小數精確度。 [延長的日期/時間] 資料類型的格式設定預設為 [一般日期]和 [長時間] 格式,並遵循 [Windows 地區設定] 中所指定的選項。 您也可以使用 [小數位數] 屬性來指定小數點右邊的位數 (1-7),以控制小數精確度的格式設定。
連結與匯入你也可以連結或匯入具有對應資料型別的資料庫,例如 SQL Server 的 datetime2 資料型別。 支援 SQL Server 版本 2014 或更新版本的資料庫。 [延長的日期/時間] 資料類型需要使用 Microsoft ODBC Driver for SQL Server 11 或更新版本。 我們建議使用 Microsoft ODBC Driver 13.1 for SQL Server。 也支援使用 OLE DB。 欲了解更多資訊,請參閱 ODBC 日期與時間改進的資料型別支援 ,以及 OLE DB) 使用增強日期與時間功能 (。
表格與報告 你可以將日期/時間擴展資料類型加入表單或報告。 在表單中,您可以使用 [日期選擇器] 和 [輸入遮罩] 來輸入具有較大範圍的日期,但不能輸入奈秒的小數精準度。
表達式支援 Date/Time Extended 資料型別支援 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 |
桌名: 可聽
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
結果 存取顯示: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 新增一列 (ID = 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
結果 存取顯示器:
月份的星期幾是:1
月份的星期幾是:1
在查詢表達式中與日期/時間擴展搭配的函式
以下函式可與 Date/Time Extended 的查詢表達式搭配使用:
年份、月份、平日、日、小時、分鐘、秒、日期添加、日期差異和日期部分。
此外,有些函式的擴展版本無法使用該參數類型來判斷計算應該產生日期/時間擴展值。 例如:
DateValueExtended、TimeValueExtended、DateSerialExtended、TimeSerialExtended、NowExtended、DateExtended、DateTimeExtended、DateTimeExtended,以及TimeExtended。
這些函式的運作方式與沒有「延伸」字尾的函式相同,但回傳的是日期/時間延伸值,而非日期/時間值。
請注意,VBA 尚未被修改,新函式不會在 VBA 程式碼中被辨識,現有函式也無法支援日期/時間擴展值。
範例
原始查詢:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
現在,將 DateValue ([OrderDate]) 改為 DateValueExtended ([OrderDate]) ,這樣就能修正第一個表達式。
請注意,Access 不處理日期/時間擴展欄位的格式功能;你可以直接設定欄位的 Format 屬性。
因此,如果你使用:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
並且把第二欄的 格式 屬性設為「短日期」,你就會得到想要的結果。