适用于: sql Server 2022 (16.x)
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric
Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
函数返回截断到指定日期部分的输入日期。
datepart
指定截断的精度。 下表列出 的所有有效 datepart 值,因为它也是输入日期类型的有效部分。
date
接受任何表达式、列或用户定义的变量,它们可以解析为任何有效的 T-SQL 日期或时间类型。 有效类型包括:
- smalldatetime
- datetime
- date
- time
- datetime2
- datetimeoffset
不要将 date 参数与 date 数据类型混淆。
还接受可解析为 datetime2(7)的字符串文本(任何字符串类型)。
的返回数据类型是动态的。 返回日期类型与输入日期相同的截断日期(如果适用,还会返回小数位时间刻度相同的截断日期)。 例如,如果向 提供了 datetimeoffset(3) 输入日期,它将返回 datetimeoffset(3)。 如果提供的字符串字面量可以解析为 datetime2(7),则 将返回 datetime2(7)。
毫秒的小数位时间刻度为 3 (),微秒的小数位时间刻度为 6 (),纳米秒的小数位时间刻度为 9 ()。 time、datetime2 和 datetimeoffset 数据类型允许的最大小数位时间刻度为 7 ()。 因此,若要截断到日期部分,小数时间刻度必须至少为 3。 同样,若要截断到日期部分,小数时间刻度必须至少为 6。 不支持 datepart,因为 T-SQL 日期类型不支持 9 的小数级时间刻度。
以下示例演示了各种 datepart 选项的使用:
结果集如下。
以下示例演示如何 将设置与 datepart 配合使用:
结果集如下。
以下示例演示了 date 参数文本的用法:
结果集如下。 所有结果均为 datetime2(7)类型。
下面的示例说明了 date 参数的用法:
结果集如下。
表中的 列用作 date 参数的示例 column 自变量:
date 参数接受可以解析为 T-SQL 日期类型的任何表达式,或者可以解析为 datetime2(7) 的任何字符串字面量。 表中的 列充当一个假自变量,用于演示如何在表达式中使用 date 参数:
如果 datepart 的单位最大精度与输入日期类型相同,则将输入日期截断到此 datepart 将不起作用。
示例 1
结果集如下。 输入 日期/时间 和截断 日期 参数相同。
示例 2
结果集如下。 输入 日期/时间 和截断 日期 参数相同。
示例 3:smalldatetime 精度
smalldatetime 仅精确到最接近的分钟,即使它有一个秒钟字段。 因此,将其截断到最接近的分钟或最接近的秒将不起作用。
结果集如下。 输入 smalldatetime 值与截断值相同:
示例 4:datetime 精度
datetime 仅精确到 3.33 毫秒。 因此,将日期时间截断为毫秒可能会产生与用户预期不同的结果。 但是,此截断值与内部存储的 datetime 值相同。
结果集如下。 截断 日期 与存储 日期相同。 这可能与基于 语句的预期不同。
如果 日期 截断尝试回溯到该数据类型支持的最小日期之前的日期,则会引发错误。 此错误仅在使用 datepart 时发生。 使用 datepart 时无法发生,因为所有 T-SQL 日期类型都巧合地使用星期一作为其最小日期。 下面是一个包含相应结果错误消息的示例:
如果函数或输入日期数据类型不支持使用的 datepart,则会引发错误。 在以下情况下可能会发生此错误:
- 使用了不受 支持的 datepart(即 、 或 )
- 与 time 相关的 datepart 配合 date 数据类型使用或者与 date 相关的 datepart 配合 time 数据类型使用。 下面是一个包含相应结果错误消息的示例:
- 日期 部分 需要比数据类型支持的更小数部分时间刻度精度。 有关详细信息,请参阅 分数时间刻度精度。 下面是一个包含相应结果错误消息的示例:
- @@DATEFIRST (Transact-SQL)
- DATEPART (Transact-SQL)
- 日期和时间数据类型及函数 (Transact-SQL)
适用于: sql Server 2022 (16.x)
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric
Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
函数返回截断到指定日期部分的输入日期。
datepart
指定截断的精度。 下表列出 的所有有效 datepart 值,因为它也是输入日期类型的有效部分。
date
接受任何表达式、列或用户定义的变量,它们可以解析为任何有效的 T-SQL 日期或时间类型。 有效类型包括:
- smalldatetime
- datetime
- date
- time
- datetime2
- datetimeoffset
不要将 date 参数与 date 数据类型混淆。
还接受可解析为 datetime2(7)的字符串文本(任何字符串类型)。
的返回数据类型是动态的。 返回日期类型与输入日期相同的截断日期(如果适用,还会返回小数位时间刻度相同的截断日期)。 例如,如果向 提供了 datetimeoffset(3) 输入日期,它将返回 datetimeoffset(3)。 如果提供的字符串字面量可以解析为 datetime2(7),则 将返回 datetime2(7)。
毫秒的小数位时间刻度为 3 (),微秒的小数位时间刻度为 6 (),纳米秒的小数位时间刻度为 9 ()。 time、datetime2 和 datetimeoffset 数据类型允许的最大小数位时间刻度为 7 ()。 因此,若要截断到日期部分,小数时间刻度必须至少为 3。 同样,若要截断到日期部分,小数时间刻度必须至少为 6。 不支持 datepart,因为 T-SQL 日期类型不支持 9 的小数级时间刻度。
以下示例演示了各种 datepart 选项的使用:
结果集如下。
以下示例演示如何 将设置与 datepart 配合使用:
结果集如下。
以下示例演示了 date 参数文本的用法:
结果集如下。 所有结果均为 datetime2(7)类型。
下面的示例说明了 date 参数的用法:
结果集如下。
表中的 列用作 date 参数的示例 column 自变量:
date 参数接受可以解析为 T-SQL 日期类型的任何表达式,或者可以解析为 datetime2(7) 的任何字符串字面量。 表中的 列充当一个假自变量,用于演示如何在表达式中使用 date 参数:
如果 datepart 的单位最大精度与输入日期类型相同,则将输入日期截断到此 datepart 将不起作用。
示例 1
结果集如下。 输入 日期/时间 和截断 日期 参数相同。
示例 2
结果集如下。 输入 日期/时间 和截断 日期 参数相同。
示例 3:smalldatetime 精度
smalldatetime 仅精确到最接近的分钟,即使它有一个秒钟字段。 因此,将其截断到最接近的分钟或最接近的秒将不起作用。
结果集如下。 输入 smalldatetime 值与截断值相同:
示例 4:datetime 精度
datetime 仅精确到 3.33 毫秒。 因此,将日期时间截断为毫秒可能会产生与用户预期不同的结果。 但是,此截断值与内部存储的 datetime 值相同。
结果集如下。 截断 日期 与存储 日期相同。 这可能与基于 语句的预期不同。
如果 日期 截断尝试回溯到该数据类型支持的最小日期之前的日期,则会引发错误。 此错误仅在使用 datepart 时发生。 使用 datepart 时无法发生,因为所有 T-SQL 日期类型都巧合地使用星期一作为其最小日期。 下面是一个包含相应结果错误消息的示例:
如果函数或输入日期数据类型不支持使用的 datepart,则会引发错误。 在以下情况下可能会发生此错误:
- 使用了不受 支持的 datepart(即 、 或 )
- 与 time 相关的 datepart 配合 date 数据类型使用或者与 date 相关的 datepart 配合 time 数据类型使用。 下面是一个包含相应结果错误消息的示例:
- 日期 部分 需要比数据类型支持的更小数部分时间刻度精度。 有关详细信息,请参阅 分数时间刻度精度。 下面是一个包含相应结果错误消息的示例:
- @@DATEFIRST (Transact-SQL)
- DATEPART (Transact-SQL)
- 日期和时间数据类型及函数 (Transact-SQL)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/52860.html