当前位置: 首页 > 面试题库 >

获取最近的星期五日期SQL

劳彦
2023-03-14
问题内容

我正在尝试获取SQL Server 2008中的最新星期五。

我有这个。它获取一周的开始时间(星期一),然后减去3天即可得出星期五。

declare @recentFriday datetime =  DATEADD(ww, DATEDIFF(dd,0,GETDATE()), 0)-3

在一周中运行此命令时,它将获得上周五的正确日期。但是,在星期五(或星期六)运行时,它仍然是上周的日期,而不是当前星期的星期五。我将使用if /
else条件,但是我敢肯定有一种更简单的方法。


问题答案:

这适用于以下任何输入和任何设置DATEFIRST

dateadd(d, -((datepart(weekday, getdate()) + 1 + @@DATEFIRST) % 7), getdate())

通过将工作日值调整为0 =星期五,将星期五模拟为一周的开始来工作。然后减去非零的工作日值以获取最近的星期五。

编辑 :已更新,可用于的任何设置DATEFIRST



 类似资料:
  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。

  • 问题内容: 给定此基准日期: 我想在列表中找到一个包含最接近日期的元组,但是它不能是更早的日期。 所以这里的输出应该是(它不能是第三个元组,因为那里的日期早于基准日期) 我的问题是,是否存在用于此类日期比较的任何模块?我试图先将所有数据更改为格式,然后进行比较,但是我的代码变得很丑陋,而且切片很多。 @编辑: 要测试的大清单: 要测试的大清单: 问题答案: 将日期转换为datetime对象,所以现

  • 我有两个日期字段: 开始日期和结束日期和临时日期。 我有一个列表,其中我在开始日期和结束日期之间返回了6条记录。我如何过滤记录并返回最接近临时日期的日期时间? 在示例记录中,我需要获得第二条记录,因为与临时日期相近。实例

  • 问题内容: 我正在尝试获取正确的SQL代码以获取上周五的日期。几天前,我认为自己的代码正确无误。但只是注意到,它是在上周的星期五日期,而不是最后一个星期五。我写此问题的日期是2012年8月11日,星期六,上午12:23。在SQLServer中,此代码将返回2012年8月3日,星期五。不过,我希望这能返回2012年8月10日,星期五。我该如何解决此代码?由于我们在这里进行了详细说明,因此,如果当前日

  • 在评论中,这是我在ATM上的代码: Atm I有两个函数:一个可以将字符串转换为日历的星期数,另一个是我正在搜索的方法。目前它只处理今天的一周中的一天正确的,应该做的工作为一周中的每隔一天的部分是缺失的(评论与...)

  • 问题内容: 我在Postgres 9.3数据库中有一个方案,在该方案中,我必须获取出售书籍的最近10个日期。考虑以下示例: table中目前没有任何限制,但是我们有一项服务,每天只插入一个计数。 我必须获得基于的结果。当我传递ID时,应使用书名,出售日期和出售份数生成报告。 所需的输出: 问题答案: 这看起来并不令人怀疑,但这 是个难题 。 假设条件 你的数目是。 表格中的所有列均已定义。 该表在