使用“日期/时间已延长”数据类型

“日期/时间已延长”数据类型存储日期和时间信息,与“日期/时间”数据类型类似,但是它提供更大的日期范围、更高的小数精度并且与 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 版或更高版本的数据库。 “日期/时间已延长”数据类型要求使用适用于 SQL Server 11 或更高版本的 Microsoft ODBC 驱动程序。 建议使用适用于 SQL Server 的 Microsoft ODBC Driver 13.1。 还支持使用 OLE DB。 有关详细信息,请参阅对 ODBC 日期和时间改进的数据类型支持使用增强的日期和时间功能 (OLE DB)

表单和报表    可以将“日期/时间已延长”数据类型添加到表单或报表中。 在表单中,可以使用日期选取器和输入掩码输入较大范围的日期,但不能输入纳秒的小数精度。

表达式支持   “日期/时间已延长”数据类型支持 SQL 聚合函数和表达式求值。 例如,使用 LoggedDateTime 作为数据类型为“日期/时间已延长”的字段:

任务

示例

结果

查找最小值

Min(LoggedDateTime)

范围内的最早日期和时间

提取月份

Month(LoggedDateTime)

月份名称,如“一月”

添加一天

[LoggedDateTime]+1

星期二将变成星期三

返回页首

后向兼容性注意事项

日期/时间数据类型与 Microsoft Access 的非订阅版本不兼容。 因此,如果数据类型本地 Access 表中实现,并且 Access 数据库用于非订阅版本的 Access,则不能打开数据库。

可以使用"当前数据库访问"选项"支持链接表/lmported 表的日期/时间扩展数据类型"来启用或禁用"日期/时间已延长"数据类型链接和导入操作。 有关详细信息,请参阅设置当前数据库的用户选项

返回页首

在 VBA 中将“日期/时间已延长”数据类型用作字符串

下面的 VBA 示例使用 DAO 方法根据下表显示、输入“日期/时间已延长”数据类型并对其进行求值。

ID

DTEData

DTData

1

1/1/2 1:01:03.1234567 AM

1/1/2001

表名:    DTETable
ID 数据类型:   Autonumber
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 将添加一个新行 (ID = 2):

ID

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

返回页首

另请参阅

数据类型和字段属性简介

设置日期和时间字段的格式

创建或删除日期和时间字段

需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

×