当前位置:网站首页 > SQL数据库编程 > 正文

sqlfor循环语句(sqlserverfor循环)



适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

此函数返回指定的 startdate 和 enddate 之间所跨的指定 datepart 边界的计数(作为带符号整数值) 。

有关处理 startdate 和 enddate 值之间较大差异的函数,请参阅DATEDIFF_BIG。 有关所有 Transact-SQL 日期和时间数据类型和函数的概述,请参阅 日期和时间数据类型和函数 。

Transact-SQL 语法约定

 
  

datepart

指定报告 startdate 和 enddate 之间的差异的单位。 常用 datepart 单位包括 或 。

日期部分值不能在变量中指定,也不能指定为带引号的字符串

下表列出了所有有效的 datepart 值 。 接受 datepart全名,或全名的任何列出的缩写。

datepart 名称 datepart 缩写 , , , , , , , , ,

日期部分名称的每个特定日期部分名称和缩写都返回相同的值。

startdate

可解析为下列值之一的表达式:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

使用四位数年份可避免含糊不清。 有关两位数年份值的信息,请参阅 服务器配置:两位数年份截止 。

enddate

请参阅 startdate 。

int

startdate 与 enddate 之间的 int 差异,以 datepart 设置的边界表示 。

例如, 返回, 提示 2036 必须是跃年。 本例意味着,如果我们从开始日期开始,然后计算天数,我们将达到结束日期

若 bigint 的返回值超出范围(-2,147,483,648 到 +2,147,483,647), 返回错误 。 对于,开始日期结束日期之间的最大差值为 24 天、20 小时、31 分钟和 23.647 秒。 对于 ,最大差值为 68 年、19 天、3 小时、14 分钟和 7 秒。

如果 startdateenddate 都只分配一个时间值,并且 datepart 不是时间 日期部分, 则 返回 。

使用 startdate 或 enddate 的时区偏移部分来计算返回值。

由于 smalldatetime 仅对分钟准确,因此当 startdateenddate 具有 smalldatetime 值时,始终在返回值中设置为秒和毫秒。

如果只为某个日期数据类型变量指定时间值, 会将所缺日期部分的值设置为默认值:。 如果只为某个时间或日期数据类型的变量指定日期值, 会将所缺时间部分的值设置为默认值:。 如果 startdate 和 enddate 中有一个只含时间部分,另一个只含日期部分, 会将所缺时间和日期部分设置为各自的默认值 。

如果 startdateenddate 具有不同的日期数据类型,并且一个具有比另一个时间部分或小数秒精度更高的时间部分, 则将另一个部分的缺失部分设置为 。

以下语句具有相同的 startdate 和 enddate 值 。 这些日期是相邻的,它们在时间上相差一百纳秒(0.0000001 秒)。 每个语句中 startdate 与 enddate 之间的差跨其 datepart 的一个日历或时间边界 。 每个语句返回 。

 
  

如果 startdateenddate 具有不同的年份值,但它们具有相同的日历周值,则返回 datepart

在 、、和子句中使用。

将字符串文字隐式转换为 datetime2 类型 。 换句话说, 当日期作为字符串传递时,不支持格式 。 必须将字符串显式强制转换为 datetimesmalldatetime 类型才能使用格式。

指定 对 没有影响。 始终使用星期日作为每周的第一天,确保函数以确定性方式运行。

如果 enddate 和 startdate 之间的差值返回的值超出 int 的范围,则可能会溢出精度或更高的精度。

本文中的 Transact-SQL 代码示例使用 或 示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。

以下示例使用不同类型的表达式作为 startdate 和 enddate 形参的实参 。

此示例计算一个表的两列中的日期之间所跨越的日边界数。

 
  

结果集如下。

 
  

在此示例中,用户定义的变量充当 startdate 和 enddate 的参数 。

 
  

此示例使用标量系统函数作为 startdate 和 enddate 的参数 。

 
  

此示例使用标量子查询和标量函数作为 startdate 和 enddate 的参数 。

 
  

此示例使用字符常量作为 startdate 和 enddate 的参数 。

 
  

此示例使用数值表达式()和标量系统函数( 和 )作为 enddate 的参数 。

 
  

此示例使用排名函数作为 startdate 的参数 。

 
  

此示例使用聚合开窗函数作为 startdate 的参数 。

 
  
 
  

结果集如下。

 
  

以下示例使用不同类型的表达式作为 startdate 和 enddate 形参的实参 。

此示例计算一个表的两列中的日期之间所跨越的日边界数。

 
  
 
  

此示例使用标量子查询和标量函数作为 startdate 和 enddate 的参数 。

 
  

此示例使用字符常量作为 startdate 和 enddate 的参数 。

 
  

此示例使用排名函数作为 startdate 的参数 。

 
  

此示例使用聚合开窗函数作为 startdate 的参数 。

 
  
  • DATEDIFF_BIG (Transact-SQL)
  • CAST 和 CONVERT (Transact-SQL)
到此这篇sqlfor循环语句(sqlserverfor循环)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • mysql主键和索引(mysql主键索引和聚集索引)2025-11-06 07:45:09
  • mysql主键语句(mysql中的主键)2025-11-06 07:45:09
  • mysql导入sql文件跳过错误(mysql怎么导入sql文件错误)2025-11-06 07:45:09
  • msvcp140.dll丢失的解决方法 mysql(msvcp140.dll丢失的解决方法是什么)2025-11-06 07:45:09
  • sql文件怎么导入数据库 oracle(如何将sql文件导入oracle数据库)2025-11-06 07:45:09
  • sqlldr字符集(sqlloader 字符集)2025-11-06 07:45:09
  • 数据库增删改查面试题(sql数据库增删改查操作面试)2025-11-06 07:45:09
  • sql循环语句的几种写法(sql循环语句的几种写法区别)2025-11-06 07:45:09
  • mysql主键索引和聚集索引(mysql索引和主键的区别)2025-11-06 07:45:09
  • sql数据库文件在哪(sqlserver的数据库文件在哪?)2025-11-06 07:45:09
  • 全屏图片