- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MS SQL DateDiff 函数计算两个日期之间的差异时跨越的边界数。
不幸的是,这不是我所追求的。例如,2012 年 6 月 1 日 -> 2012 年 6 月 30 日跨越 4 个边界,但涵盖 5 周。
是否有我可以运行的替代查询,它会给出一个月相交的周数?
更新
尝试弄清楚我到底在追求什么:
对于任何给定的月份,我需要与该月相交的周数。
此外,对于只采用 datediff 并添加一个的建议,那是行不通的。例如,2010 年 2 月仅与 4 周相交。 DateDiff
调用返回 4,这意味着简单地加 1 会使我得到错误的周数。
最佳答案
注意本义周的计算通常比您想象的要复杂!
如果您使用 Datepart(week, aDate)
,您会对“周”这个概念做出很多假设。 一周是从星期天还是星期一开始?您如何处理第 1 周和第 5 周之间的过渡。一年中的实际周数根据您使用的周计算规则(first4dayweek、weekOfJan1 等)而有所不同
如果你只是想处理你可以使用的差异
DATEDIFF('s', firstDateTime, secondDateTime) > (7 * 86400 * numberOfWeeks)
如果第一个 dateTime 是 2011-01-01 15:43:22
那么相差是 2011-02-05 15:43:22
之后的 5 周
编辑: 实际上,根据这篇文章:Wrong week number using DATEPART in SQL Server您可以现在使用Datepart(isoww, aDate)
获取ISO 8601 周数。我知道 week
坏了,但不知道现在有修复。酷!
如果您将星期一用作一周的第一天,则此方法有效
set language = british
select datepart(ww, @endofMonthDate) -
datepart(ww, @startofMonthDate) + 1
british
,您可以将星期一设为一周的第一天。isoww
参数使用星期一作为一周的第一天,但它导致 1 月有时在第 52/53 周开始,而 12 月有时在第 1 周结束(这会使您的 select 语句更复杂) 关于tsql - SQL DateDiff Weeks - 需要和替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5581816/
我想使用sql查询数据库以显示id 1,2,3等之间的时间差异。基本上它会比较其下面的行的所有记录。任何帮助,将不胜感激。 IDCODE DATE TIME DIFFERENCE (M
SQL服务器: DECLARE @Date1 DATETIME SET @Date1 = '2012-26-12 12:00:05 AM' DECLARE @Date2 DATETIME SET @D
SQL服务器: DECLARE @Date1 DATETIME SET @Date1 = '2012-26-12 12:00:05 AM' DECLARE @Date2 DATETIME SET @D
我正在尝试执行我认为是简单的日期差异函数的操作,但是由于某种原因,我的单位值被读取为列(“dd”),因此我一直在获取列,但无法解决错误 我正在使用AWS Athena 我的代码是这样 SELECT "
我有一个包含日期列(开始日期、结束日期)的表格,我想计算这些日期之间的差异并按月分组。 我可以在几天内得到 datediff,但我不知道如何在月内对它进行分组,有什么建议吗? Table: id
我在我的 mongoDB 中有一个集合,它存储提供给客户的服务以及他们的电子邮件地址,如下所示 { "_id" : ObjectId("56a84627f8fd4a136c0e944a"),
我们想计算两个 DateTimeOffset 之间的差异,但是,SQL 返回了错误的值,我们做错了什么? DECLARE @timeInZone1 AS DATETIMEOFFSET DECLARE
我需要计算两个日期之间的 DateDiff(小时),但仅限于工作时间(8:30 - 16:00,没有周末)。然后,按照下面的示例,此结果将放入 Reaction_Time 列中。 ID 日期 reac
我有一个名为 member 的 SQL 表,其中有成员信息以及他们的出生日期。 我需要列出所有 25 岁以上的人。现在,我得到了这个: SELECT * FROM members WHERE DATE
我在我们的旧代码中找到了一个地方,原来的程序员试图计算一个员工是否被雇用了一定年限。计算使用的是受雇日期与今天之间的天数差除以 364。这对我来说没有意义,所以我将其更改为年差。这似乎也给出了错误的答
我在这里在 CF 中解决了一个难题。 您有一个时间戳作为参数传递给服务器。例如 2012-5-10 14:55 . 如果从给定的时间过去了 30 秒,您将如何查看并返回 true或 false ? 规
我正在运行一个简单的 DATEDIFF 查询,但它似乎没有正确计算天数,或者我做错了什么。 如果我跑 PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01) RETUR
我在将分钟转换为小数时遇到了一些问题,即使我已经查看了 SO 的其他回复。 select cast(datediff(minute, min(start_time), min(complete_tim
我需要从 SQL Server 数据库向下游传递一个值,这本质上是两个 时间戳 之间的差异。使用 DATEDIFF 函数就足够简单了。 SELECT DATEDIFF(day, '2015-11-06
有人知道为什么以下返回 8 吗?我预计 8 小时 30 分钟,还是 8.5? declare @start_day datetime; declare @end_day datetime; decla
我想获取相对于当前日期的上个月 SELECT datediff(mm,-1,2-2-2011) 此查询给出67,这是一个错误的值..我哪里出错了? 最佳答案 您可以使用DATEADD 例如。 SELE
我在使用 PHP DateDiff 时遇到问题,我不明白为什么每个时区返回不同的结果,例如在本例中布拉格返回 0 个月,而美国返回 1 个月。 这有什么区别以及我如何按预期返回 1 个月(而不是 30
我有一个名为 date1 的变量,其中包含使用 parseDateTime 生成的 ColdFusion 日期/时间对象。当我转储变量时,我得到 {ts '2014-12-20 15:46:57'}。
我有一个 Excel 文件,它会在添加条目时自动为其添加时间戳。我想要一个脚本来查找第一个条目和最后一个条目之间的时间差(以分钟为单位)。这是我到目前为止所想到的。 Sub Duration() Di
我正在使用 SQL Server我需要知道患者接受治疗的天数。问题是我只能得到 startDate 而不能得到 endDate当我运行查询并按 StartDate 排序时,我得到如下内容: Start
我是一名优秀的程序员,十分优秀!