ใช้ชนิดข้อมูลวันที่/เวลาที่ขยาย

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021

ชนิดข้อมูลวันที่/เวลาที่ขยายจะจัดเก็บข้อมูลของวันที่และเวลา และคล้ายกับชนิดข้อมูลวันที่/เวลา แต่จะระบุช่วงวันที่ที่กว้างกว่า ความแม่นยำของเศษส่วนที่สูงขึ้น และความเข้ากันได้กับชนิดข้อมูล เวลาวันที่2 ของ SQL Server เมื่อคุณนำเข้าหรือลิงก์ข้อมูล Access ไปยัง SQL Server คุณสามารถแมปเขตข้อมูลของวันที่/เวลาที่ขยายของ Access ไปยังคอลัมน์ เวลาวันที่2 ของ SQL Server ได้อย่างต่อเนื่อง สําหรับข้อมูลเพิ่มเติม ให้ดู วันที่เวลา 2 (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 หลัก เมื่อต้องการควบคุมการแสดงเศษส่วนนาโนวินาที ให้เปิดตาราง บน Ribbon ให้เลือก เขตข้อมูล และในกลุ่ม การจัดรูปแบบ ให้เลือก รูปปุ่มเพิ่มตําแหน่งทศนิยม หรือ ปุ่มลดตําแหน่งทศนิยม

จัด รูป แบบ ทั้งชนิดข้อมูลวันที่/เวลาและวันที่/เวลาที่ขยายจะใช้สตริงการจัดรูปแบบมาตรฐานที่คล้ายกันของ วันที่ทั่วไปวันที่แบบยาววันที่แบบปานกลางวันที่แบบสั้นเวลาแบบยาวเวลาแบบปานกลาง และ เวลาแบบสั้น และสนับสนุนการจัดรูปแบบแบบกําหนดเอง สำหรับชนิดข้อมูลวันที่/เวลาที่ขยาย รูปแบบมาตรฐานที่ยึดตามเวลายังรองรับความแม่นยำของเศษส่วนสำหรับนาโนวินาทีด้วย การจัดรูปแบบค่าเริ่มต้นของชนิดข้อมูลวันที่/เวลาเป็นรูปแบบ วันที่ทั่วไป และ เวลาแบบยาว และทำตามตัวเลือกที่ระบุใน การตั้งค่าภูมิภาคของ Windows นอกจากนี้ คุณยังสามารถควบคุมการจัดรูปแบบของความแม่นยำของเศษส่วนโดยใช้คุณสมบัติ ตำแหน่งทศนิยม เพื่อระบุจำนวนหลักทางด้านขวาของจุดทศนิยม (1-7) ได้

ลิงก์และนําเข้า คุณยังสามารถลิงก์หรือนําเข้าจากฐานข้อมูลที่มีชนิดข้อมูลที่สอดคล้องกัน เช่น ชนิดข้อมูล SQL Server datetime2 รองรับ SQL Server เวอร์ชัน 2014 หรือเวอร์ชันที่ใหม่กว่า ชนิดข้อมูลวันที่/เวลาที่ขยายจำเป็นต้องใช้โปรแกรมควบคุม ODBC ของ Microsoft สำหรับ SQL Server 11 หรือเวอร์ชันที่ใหม่กว่า เราขอแนะนําให้ใช้ โปรแกรมควบคุม ODBC ของ Microsoft 13.1 สําหรับ SQL Server ยังรองรับการใช้งาน OLE DB อีกด้วย สําหรับข้อมูลเพิ่มเติม ให้ดู การสนับสนุนชนิดข้อมูลสําหรับการปรับปรุงวันที่และเวลา ODBC และใช้ฟีเจอร์วันที่และเวลาที่ได้รับการปรับปรุง (OLE DB)

แบบฟอร์มและรายงาน คุณสามารถเพิ่มชนิดข้อมูลวันที่/เวลาที่ขยายลงในแบบฟอร์มหรือรายงาน ในแบบฟอร์ม คุณสามารถใช้ตัวใช้เลือกวันที่และรูปแบบการป้อนข้อมูลในการใส่วันที่ที่มีช่วงขนาดใหญ่ขึ้น แต่ไม่ใช่ความแม่นยำของเศษส่วนนาโนวินาที

การสนับสนุนนิพจน์ ชนิดข้อมูลวันที่/เวลาที่ขยายสนับสนุน ฟังก์ชันการรวม SQL และการประเมินนิพจน์ ตัวอย่างเช่น การใช้ LoggedDateTime เป็นเขตข้อมูลที่มีชนิดข้อมูลวันที่/เวลาที่ขยาย:

งาน ตัวอย่าง ผลลัพธ์
ค้นหาค่าน้อยที่สุด Min(LoggedDateTime) วันที่และเวลาที่เร็วที่สุดในช่วง
แยกเดือน Month(LoggedDateTime) ชื่อเดือน เช่น มกราคม
เพิ่มหนึ่งวัน [LoggedDateTime]+1 วันอังคารจะกลายเป็นวันพุธ

ด้านบนของหน้า

ข้อควรพิจารณาเกี่ยวกับความเข้ากันได้กับรุ่นก่อนหน้า

ชนิดข้อมูลวันที่/เวลาที่ขยายไม่เข้ากันกับ Microsoft Access เวอร์ชันก่อนหน้า ถ้าชนิดถูกใช้ภายในตาราง Access ภายในเครื่อง Access เวอร์ชันที่ไม่มีฟีเจอร์นี้จะไม่สามารถเปิดฐานข้อมูลได้

คุณสามารถเปิดหรือปิดใช้งานชนิดข้อมูลวันที่/เวลาที่ขยายสําหรับการลิงก์และการนําเข้าการดําเนินการด้วยตัวเลือกการเข้าถึงฐานข้อมูลปัจจุบันสนับสนุนชนิดข้อมูลวันที่/เวลาที่ขยายสําหรับตารางที่ลิงก์/lmported สําหรับข้อมูลเพิ่มเติม ให้ดูที่ ตั้งค่าตัวเลือกผู้ใช้สําหรับฐานข้อมูลปัจจุบัน

ด้านบนของหน้า

ใช้ชนิดข้อมูลวันที่/เวลาที่ขยายเป็นสตริงใน VBA

ตัวอย่าง VBA ต่อไปนี้ใช้วิธีการ DAO เพื่อแสดง ใส่ และประเมินชนิดข้อมูลวันที่/เวลาที่ขยายตามตารางด้านล่าง

รหัส DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001

ชื่อตาราง: DTETable
ชนิดข้อมูล ID: Autonumber
ชนิดข้อมูล DTEData: วันที่/เวลาที่ขยาย
ชนิดข้อมูล DTData: วันที่/เวลา

ตัวอย่าง: การแสดงวันที่และเวลา

ตัวอย่างต่อไปนี้จะแสดงวันที่และเวลา รูปแบบที่ใช้คือ mm/dd/yyyy hh:mm:ss.nnnnnnn ในนาฬิกาแบบ 24 ชั่วโมง รูปแบบไม่สามารถกำหนดเองได้


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 จะเพิ่มแถวใหม่ (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

ผล Access จะแสดง:

วันของเดือนคือ: 1
วันของเดือนคือ: 1

ฟังก์ชันที่ทํางานกับวันที่/เวลาที่ขยายในนิพจน์คิวรี

ฟังก์ชันต่อไปนี้ทํางานกับวันที่/เวลาที่ขยายในนิพจน์คิวรี:
​​​​​​​
ปี, เดือน, วันทํางาน, วัน, ชั่วโมง, นาที, วินาที, เพิ่มวันที่, DateDiff และ DatePart

นอกจากนี้ยังมีฟังก์ชันบางเวอร์ชันที่ขยายเวลาซึ่งไม่สามารถใช้ชนิดของอาร์กิวเมนต์เพื่อกําหนดว่าการคํานวณควรมีค่าวันที่/เวลาที่ขยาย ต่อไปนี้คือ:

DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, 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;

และตั้งค่าคุณสมบัติ รูปแบบ สําหรับคอลัมน์ที่สองเป็น "วันที่แบบสั้น" คุณจะได้รับผลลัพธ์ที่คุณต้องการ

ด้านบนของหน้า

ดูเพิ่มเติม

บทนำสู่ชนิดข้อมูลและคุณสมบัติเขตข้อมูล

จัดรูปแบบเขตข้อมูลวันที่และเวลา

สร้างหรือลบเขตข้อมูลวันที่และเวลา