SQL Server 2005 中的等周

2024-01-02

在 SQL Server 2008 中,可以通过以下方式找到 isoweek:

SELECT datepart(iso_week, getdate())

在 SQL Server 2008 之前,没有内置函数来查找 isoweek。

我一直在寻找一个好的语法来为 SQL Server 2005 找到用户定义的 iso_week。我找到了很多解决方案。我不喜欢我找到的任何解决方案,其中大多数都不起作用,而且太长了。

由于这个问题很老,我希望这个问题已经耗尽并且已经找到了最好的解决方案。但我无法找到好的方法。

我写了一个解决方案,稍后发布。但在此之前,我想绝对确保没有其他人可以匹配我编写的解决方案。

我希望获得自学者徽章。我敦促人们为这个古老的问题找到最好的答案。

在给人们机会找到一个好的解决方案后,我将发布我的答案。


这里有一个链接用于其他早期的尝试http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=60510 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=60510

这是该函数的旧代码

CREATE function f_isoweek(@date datetime)
RETURNS INT
as
BEGIN
DECLARE @rv int

SELECT @rv = datediff(ww, dateadd(ww, datediff(d, 0, dateadd(yy, datediff(yy, 0, day4),3))/7,-4),day4)
FROM (SELECT dateadd(ww, datediff(day, 0, @date)/7, 3) day4) a

RETURN @rv
END

将 @AndriyM 的精彩答案与我自己的答案结合起来后,我们只剩下 1 行。这是新代码。

CREATE function f_isoweek(@date datetime)
RETURNS INT
as
BEGIN

RETURN (datepart(DY, datediff(d, 0, @date) / 7 * 7 + 3)+6) / 7
-- replaced code for yet another improvement.
--RETURN (datepart(DY, dateadd(ww, datediff(d, 0, @date) / 7, 3))+6) / 7

END

旧代码的解释(不解释新代码。它是我的代码和AndriyM的代码的片段):

查找所选日期的第 4 个工作日

dateadd(week, datediff(day, 0, @date)/7, 3) 

查找 isoyear - 一周的第 4 天的年份始终与该周的 isoyear 相同

datediff(yy, 0, day4)

当向等年的第一天添加 3 天时,会找到等年的第一个等周的随机日期

dateadd(yy, datediff(yy, 0, day4),3)

查找等值年的第一个等值周的相对周

datediff(d, 0, dateadd(yy, datediff(yy, 0, day4),3))/7

查找第一个等周的星期一减去 4 天,结果是等年的第一个等周的第一天之前的星期四

dateadd(ww, datediff(d, 0, dateadd(yy, datediff(yy, 0, day4),3))/7,-4)

知道第一个等周之前一周的第一个星期四 以及所选周的第一个星期四, 使得计算周变得非常容易,无论 datefirst 的设置如何,因为两个日期的工作日都是星期四。

datediff(ww, dateadd(ww, datediff(d, 0, dateadd(yy, datediff(yy, 0, day4),3))/7,-4),day4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2005 中的等周 的相关文章

  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0
  • 如果存在多个相同的 ID,则使用 where 子句

    我有下表 ID source Name Age 1 SQL John 18 2 SAP Mike 21 2 SQL Mike 20 3 SAP Jill 25 我希望每个ID都有一条记录 这背后的想法是 如果 ID 仅出现一次 无论来源如何
  • SQL Server 每年的第一个星期一

    如何使用 T SQL 查找 一年中的第一个星期一 这是 ngruson 发布的链接中的示例 http sqlbump blogspot nl 2010 01 first monday of year html http sqlbump bl
  • SQL Server 端口 445 和 1433

    SQL Server 端口 445 和 1433 之间有什么区别以及每个端口的用途是什么 445不是SQL端口 是SMB端口 仅当您使用命名管道协议时 它才会参与 SQL Server 因为命名管道通过 SMB 进行传输 而这反过来又使用
  • 重新启动后无法远程或本地连接到 SQL Server

    上周末进行一些网络维护后 我们的开发服务器出现了一些问题 导致我们重新启动它 重新启动期间安装了一些更新 这可能是也可能不是一个因素 从那时起 我们就无法连接到 SQL Server 2005 即使是通过 Management Studio
  • where 子句中的双 %% ?

    我有一个 where 子句 如下例所示 WHERE subject LIKE chef AND dep LIKE psy 使用 1 或 2 符号有什么区别 我知道其中一个的含义 通配符 但不知道第二个添加的功能是什么 该查询可能是一个拼写错
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

    我已经使用 Microsoft 查询创建了参数查询 如上所述here https superuser com questions 197453 run an sql query with a parameter from excel 200
  • 如何停止“已将数据库上下文更改为...”消息

    有什么办法可以阻止Changed database context to 当 SQL 片段有一个时的消息USE database in it 您需要设置错误级别 http msdn microsoft com en us library m
  • INSERT INTO ... SELECT ... 是否始终按序号位置匹配字段?

    我的测试似乎证实了这一点 INSERT INTO a x y SELECT y x FROM b maps b y to a x 即字段仅按顺序位置匹配 而不按名称匹配 情况总是如此吗 即 我可以依赖这种行为吗 很遗憾 文档 http ms
  • T-SQL - 字符串连接

    希望有人可以提供帮助 我是一个新手 SQL 黑客 而且确实很糟糕 我在 SQL Server 2005 上有两个表 TABLE 1 和 TABLE2 TABLE1 COL1 COL2 1 10 2 20 3 30 4 10 4 20 5 2
  • T-SQL 相当于 =rand()

    我有几个内容表 我想用随机的文本段落填充它们 在 MS Word 中 我只需输入 rand 即可 我收到三段新鲜的文字 是否有 SQL 脚本 命令可用于使用 t sql 生成随机字典单词 declare Lorem nvarchar max
  • SQL 性能,使用 OPTION (FAST n)

    谁能告诉我在 SQL 查询中使用 OPTION FAST n 有什么缺点 比如我这么快就抓取了10万条记录 但这对SQL Server的其他进程有影响吗 我正在接近我的问题 我必须每周运行一次数据处理 因此 第一个结果会在 5 7 秒后出现
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • SQL Server 2012(代号:Denali)CTP 3的FIRST_VALUE和LAST_VALUE的实际用途是什么

    随着 Denali 的 CTP 3 版本的发布 我们有了更多的分析功能 其中我对其中两个感兴趣 a 第一个值 http msdn microsoft com en us library hh213018 28v SQL 110 29 asp
  • 如何在 SQL Server 中什么都不做[重复]

    这个问题在这里已经有答案了 可能的重复 T SQL 中的空语句 https stackoverflow com questions 3234871 empty statement in t sql 我怎样才能让它在 SQL Server 中
  • SQL Server 2005 - 字符编码问题

    我正在尝试将此值 llko 存储到 SQL Server 中的列中 该列是 nvarchar 1000 插入语句如下所示 N llko 但里面的数据仍然显示为 a llkoa 关于我可以尝试什么的任何想法 EDIT 我刚刚意识到我已经更改了
  • 在存储过程结束时显式删除本地临时表有什么好处?

    考虑以下伪 T SQL 代码 由存储过程执行 CREATE TABLE localTable

随机推荐

  • Swift 版本冲突:编译器不支持此 SDK - 使用 BUILD_LIBRARY_FOR_DISTRIBUTION 设置。可能是什么问题?

    我正在构建一个 Swift 静态库 Xcode 13 2 Swift 编译器 5 5 2 iOS 部署目标 12 0 构建用于分发的库YES 跳过安装NO Swift 语言版本 5 并尝试使用 4 2 使用 CocoaPods 管理依赖项
  • Eclipse/Kotlin 仅识别一些需要的导入

    我按照说明进行操作用于 Eclipse 的 Kotlin 插件 https kotlinlang org docs tutorials getting started eclipse html Hello World 测试运行良好 然后我做
  • 如何在水晶报表中调用存储过程

    使用水晶报表 7 我想在水晶报表中调用存储过程 怎么做 将存储过程添加到您的报告中 就像你会添加一张桌子一样 添加存储过程运行需要的参数 作为参数它们在存储过程中的名称完全相同 因此 如果 SP 有两个参数 PARAM1 和 PARAM2
  • 从包访问流星应用程序的导入目录?

    Meteor应用程序目录布局 imports api collections MyCollectionFile js packages mypackage mypackageMain js 我可以从包文件中导出任何内容并在应用程序中使用它
  • ARM - 域访问控制寄存器

    我想知道 为什么我们总是必须禁用位于协处理器寄存器 cp15 c3 中的域访问控制寄存器中的所有域 这通常是在启动代码中通过如下方式完成的 使用MCR http infocenter arm com help index jsp topic
  • 如何在 MongoDB 的 $lookup 中返回单个对象而不是数组?

    当我们使用 lookup in a聚合查询 of MongoDB我们使用这种格式 lookup from users localField userId foreignField id as user where user作为对象数组返回
  • 如何同时绑定Mousedown和Touchstart,但两者都不响应?安卓、JQuery

    在一个可以在移动设备上查看的网站上工作 并且需要在 touchstart 和 mousedown 上绑定操作 看起来像这样 roll bind mousedown touchstart function event someAction 它
  • 如何在 ng-if AngularJS 中使用 JavaScript?

    我试图使用JavaScript表达与ng if 然而 它没有做任何事情 它总会回归false 我尝试过以下内容 ng if localStorage getItem grid layout list 如果为 true 则显示 div The
  • 如何使用 jQuery 和 xhr2 进行文件上传(返回空 $_FILES)

    我正在使用 ajax 方法和 xhr2 使用 ajax 方法上传文件 当我将任何标准对象分配给 ajax 参数数据时 POST php 中将返回一个正确的非空数组 JS data name john doe PHP print r POST
  • 设置 Java 环境 (Apache Tomcat) 以编码 UTF-8

    我想知道如何设置 Java 环境以 UTF 8 进行编码 基本上 我的 JSP 页面显示了一些阿拉伯文本 但它们的编码似乎不正确 当我在 IDE 中运行页面时 它工作正常 但在它们所在的服务器上 它简单地将其显示为问号 我只是想知道如何设置
  • 如何将文本中的单词分离结合起来?

    我有简单的文字 text F 在这里我想组合单词并得到这个结果 巴德鲁
  • 如何在 iOS 上启用文件和文件夹权限

    我正在尝试使用 AlamoFire 下载文件并将其保存到用户选择的下载目录 如 safari 但是 每当我将下载目录设置为应用程序文档之外的文件夹时 我都会收到以下错误 在真实的 iOS 设备上 downloadFileMoveFailed
  • 应用程序可以被反编译吗?

    我需要将网站特定部分的身份验证信息编码到我的应用程序中 应用程序是否有可能被 反编译 并暴露用户名和密码 NSURL url NSURL URLWithString https predefinedUsername email protec
  • Azure DevOps gulp 步骤失败,找不到本地模块

    我有一个 Azure DevOps 构建步骤 为 angularjs 应用程序运行 gulp 我将 Gulp 文件路径设置为指向GulpFile js引用的任务应捆绑应用程序并将文件放入解决方案文件夹中的 zip 文件中 当我在 Visua
  • 如何设置 Amazon S3、回形针和 ENV 变量

    我尝试了许多不同的方法来使用 ENV 变量设置 S3 进行图像上传 但无法使其工作 我知道我的密钥和存储桶名称有效 因为当我将它们直接放入代码中时 我的图像会正确上传 但是 当我尝试切换到 ENV 变量时 事情不起作用 我使用了 Figar
  • 谷歌图表不显示轴标签

    这不适用于图像图表 我有以下代码可以生成正确的图表 但标签不显示 图表 div 位于另一个 div 中 该 div 用作我的页面上的选项卡 当我在未选择包含图表的选项卡时运行该函数时 图表将显示为没有标签 当我在选择选项卡的情况下运行该函数
  • android UDP连接,没有接收到任何数据

    我是这方面的新手 所以如果我问愚蠢的问题 请原谅我 我试图在 Eclipse 的 PC 模拟器和 Android 手机之间建立 UDP 连接 或两个 Android 手机设备之间 我有一个router并且手机通过路由器的 wifi 网络连接
  • 如何在 SQLAlchemy 中创建带有外键列表的字段?

    我正在尝试在另一个模型的字段中存储模型列表 下面是一个简单的例子 我有一个现有的模型 Actor 我想创建一个新模型 Movie 与场Movie list of actors import uuid from sqlalchemy impo
  • 使用 Angular ui-grid 时的列标题换行

    我已将我的 AngularJS SPA 应用程序从ng grid v2 0 7 to ui grid v3我的列标题不再环绕 我的列标题现在是单行并显示省略号 当列标题不适合时 此功能是否已被删除或者是否已被其他方法取代 我相信我已经找到了
  • SQL Server 2005 中的等周

    在 SQL Server 2008 中 可以通过以下方式找到 isoweek SELECT datepart iso week getdate 在 SQL Server 2008 之前 没有内置函数来查找 isoweek 我一直在寻找一个好