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

如何获取星期六的日期(或任何其他工作日的日期)-SQL Server

孟和怡
2023-03-14
问题内容

如何获取周六的日期。我今天有约会。

GETDATE()

这该怎么做。

例如。今天是08-08-2011

我想输出为 08-13-2011


问题答案:

如果您这样调用该函数,它将在下一个星期六返回:

SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)

“ 6”来自您可以设置的可能值的列表DATEFIRST

您可以通过相应地更改第二个参数来获取星期几。

这是功能:

IF OBJECT_ID('dbo.fn_Get_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_Get_NextWeekDay
GO
CREATE FUNCTION dbo.fn_Get_NextWeekDay(
     @aDate   DATETIME
   , @dayofweek      INT
    /*
      @dw - day of the week
      1 - Monday
      2 - Tuesday
      3 - Wednesday
      4 - Thursday
      5 - Friday
      6 - Saturday
      7 - Sunday
    */   
  )
RETURNS DATETIME 
AS
/*
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 1)
*/
BEGIN
  RETURN 
      DATEADD(day
        , ( @dayofweek + 8 - DATEPART(dw, @aDate) - @@DATEFIRST ) % 7
        , @aDate 
      )  
END
GO

[编辑] 这可能是另一种解决方案。这应该以任何语言工作:

IF OBJECT_ID('dbo.fn_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_NextWeekDay
GO
CREATE FUNCTION dbo.fn_NextWeekDay(
     @aDate     DATE
   , @dayofweek NVARCHAR(30)
  )
RETURNS DATE
AS
/*
  SELECT dbo.fn_NextWeekDay('2016-12-14', 'fri')
  SELECT dbo.fn_NextWeekDay('2016-03-15', 'mon')
*/
BEGIN
  DECLARE @dx INT = 6
  WHILE UPPER(DATENAME(weekday,@aDate)) NOT LIKE UPPER(@dayofweek) + '%'
  BEGIN

    SET @aDate = DATEADD(day,1,@aDate)

    SET @dx=@dx-1
    if @dx < 0 
    BEGIN
      SET @aDate = NULL 
      BREAK
    END
  END

  RETURN @aDate

END
GO


 类似资料:
  • 问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做:

  • 问题内容: 我有一个小程序,从今天开始显示当前的一周,像这样: 然后是显示周数的JLabel: 因此,现在我想拥有一个JTextField,您可以在其中输入日期,而JLabel将使用该日期的星期数进行更新。我真的不确定如何做到这一点,因为我是Java的新手。我需要将输入另存为字符串吗?一个整数?它将是什么格式(yyyyMMdd等)?如果有人可以帮助我,我将不胜感激! 问题答案: 我需要将输入另存为

  • 问题内容: 我有一个日期,以及如何使所有日期都落在给定日期所属的一周的Java中? 有人可以帮我这个吗。 我正在尝试获取给定日期的星期日期,我已经解释了为什么这个问题不是重复的,请在评论前阅读。 问题答案: 您可以尝试以下方式, 输出值

  • 问题内容: 我有两个LocalDate,它们代表某个时间间隔。现在,我必须获取此间隔包含的所有星期五的LocalDates。最简单的方法吗? 问题答案: 解决方案:懒惰地走一个星期。 测试

  • 问题内容: 我正在尝试获取本周星期一的日期。在我的表格视图中,这被视为一周的第一天。我还需要获取当前一周的星期日。在我的表格视图中,这被视为一周的最后一天。 当前尝试: 问题答案: 我写了Date扩展名以获取某个工作日的Date,这就是在Swift 5中使用它的简便性 这是日期扩展,

  • 问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时