适用于: SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric 中的 SQL 分析端点
Microsoft Fabric 中的仓库
定义结合了 24 小时制时间的日期。 可将 datetime2 视作现有 datetime 类型的扩展,其数据范围更大,默认的小数精度更高,并具有可选的用户定义的精度。
默认的 字符串文字格式
(用于下级客户端)
有关详细信息,请参阅 本文后面的下层客户端 的向后兼容性。
日期范围 到
公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日
时间范围 到 时区偏移量范围 无 各元素的范围 是 一个四位数的数字,范围从一年到,表示一年。
是一个两位数的数字,范围为 1,表示指定年份中的一个月。
是一个两位数的数字,范围从月份 到 月份,表示指定月份的一天。
是一个两位数的数字,范围为 1 ,表示小时。
是一个两位数的数字,范围为 1 ,表示分钟。
是一个两位数的数字,范围为 1 ,表示第二个数字。
是一个从零到七位数的数字,表示小数秒。 在 Informatica 中,当 n 小于时,小数秒将被截断。
字符长度 最低 19 个位置 () 到 27 最大值 () 精度、小数位数 0 到 7 位数字,准确度为 100 纳秒(100 ns)。 默认精度为 7 位数。
在 Microsoft Fabric 中,此精度可以是 0 到 6 的整数,没有默认值。 必须在 Microsoft Fabric 中指定精度。
存储大小 1 精度小于 3 的 6 个字节。
精度为 3 和 4 的 6 个字节。
所有其他精度都需要 8 个字节。 2
精确度 100 纳秒 默认值 日历 公历 用户定义的秒的小数部分精度 是 时区偏移量感知和保留 否 夏时制感知 否
1 提供的值用于未压缩的行存储。 使用数据压缩或列存储可能会更改每个精度的存储大小。 此外,磁盘和内存中的存储大小可能有所不同。 例如,采用批处理模式时,datetime2 值始终需要 8 个字节的内存。
2 当 datetime2 值转换为 varbinary 值时,会将额外的字节添加到 varbinary 值以存储精度。
有关数据类型元数据,请参阅 sys.systypes 或 TYPEPROPERTY。 某些日期和时间数据类型的精度和小数位数是可变的。 若要获取列的精度和小数位数,请参阅 COLUMNPROPERTY、 COL_LENGTH 或 sys.columns。
以下各表列出了适用于 datetime2 的支持的 ISO 8601 和 ODBC 字符串文字格式。 有关 datetime2 日期和时间部分的字母、数字、未分离和时间格式的信息,请参阅日期和时间。
小数点右侧的数字表示秒小数部分,可指定 0 到 7 位(100 纳秒)。
datetime2 符合 date 和 time 的 ANSI 和 ISO 8601 标准。
某些下级客户端不支持 time、date、datetime2 和 datetimeoffset 数据类型。 下表显示了 SQL Server 上级实例与下级客户端之间的类型映射。
转换为日期和时间数据类型时,数据库引擎将拒绝无法识别为日期或时间的所有值。 有关对日期和时间数据使用 CAST 和 CONVERT 函数的信息,请参阅 CAST 和 CONVERT
本部分介绍其他日期和时间数据类型转换为 datetime2 数据类型时会发生什么。
从 date 转换时,会复制年、月和日。 时间部分设置为 00:00:00.0000000。 下面的代码显示将 值转换为 值的结果。
结果集如下。
当转换从 time(n)开始时,将复制时间组件,并将日期组件设置为 。 以下示例显示了将 time(7) 值转换为 datetime2 值的结果。
结果集如下。
从 smalldatetime 转换时,会复制小时和分钟。 秒和秒的小数部分设置为 0。 下面的代码显示将 值转换为 值的结果。
结果集如下。
从 datetimeoffset(n) 转换时,会复制日期和时间部分。 时区被截断。 下面的示例显示了将 值转换为 值的结果。
结果集如下。
从 datetime 转换时,会复制日期和时间。 小数精度扩展到 7 位。 下面的示例显示了将 值转换为 值的结果。
结果集如下。
在数据库兼容性级别 130 及更高级别下,从日期时间到 datetime2 数据类型的隐式转换通过考虑小数毫秒(导致不同的转换值)来提高准确性,如前一示例所示。 每当存在日期/时间与 datetime2 数据类型之间的混合比较方案时,使用显式强制转换为 datetime2 数据类型。 有关详细信息,请参阅 SQL Server 和Azure SQL 数据库改进,以处理某些数据类型和不常见操作。
如果字符串所有部分的格式均有效,则允许从字符串文字转换为日期和时间类型。 否则,将引发运行时错误。 不指定样式的隐式转换或显式转换(从日期和时间类型到字符串文本)采用当前会话的默认格式。 下表显示用于将字符串文字转换为 datetime2 数据类型的规则。
下例比较了将一个字符串分别转换为各种 date 和 time 数据类型时所产生的结果 。
结果集如下。
- CAST 和 CONVERT (Transact-SQL)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/44141.html