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

使用T-SQL获取下个月的第一个星期日

羊舌源
2023-03-14
问题内容

寻找一种获取日期格式为“11/1/2009”的日期的方法,这将是下个月的第一个星期日。我想在10月的第一个星期日之后运行此查询,以获取下个月的第一个星期日。用T-SQL查询完成此操作的最佳方法是什么?

谢谢


问题答案:

试试这个:

Declare @D Datetime 
Set @D = [Some date for which you want the following months' first sunday]
Select DateAdd(day, (8-DatePart(weekday, 
    DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)))%7, 
    DateAdd(Month, 1+DateDiff(Month, 0, @D), 0))

编辑说明:

下个月的第一个月由以下表达式给出:

DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)

或方式:将1更改为2,可以将其修改为从现在起两个月的第一个月:

DateAdd(Month, 2+DateDiff(Month, 0, @D), 0)

编辑:作为对@NissanFan和@Anthony的响应:将其修改为返回第一个星期一,星期二,星期三,等等,将值8更改为9、10、11等。

Declare @Sun TinyInt Set @Sun = 8
Declare @Mon TinyInt Set @Mon = 9
Declare @Tue TinyInt Set @Tue = 10
Declare @Wed TinyInt Set @Wed = 11
Declare @Thu TinyInt Set @Thu = 12
Declare @Fri TinyInt Set @Fri = 13
Declare @Sat TinyInt Set @Sat = 14
Declare @D Datetime, @FONM DateTime -- FirstofNextMonth 
Set @D = [Some date for which you want the following months' first sunday]
Set @FONM = DateAdd(Month, 1+DateDiff(Month, 0, @D),0)

Select 
  DateAdd(day, (@Sun -DatePart(weekday, @FONM))%7, @FONM) firstSunInNextMonth,
  DateAdd(day, (@Mon -DatePart(weekday, @FONM))%7, @FONM) firstMonInNextMonth,
  DateAdd(day, (@Tue -DatePart(weekday, @FONM))%7, @FONM) firstTueInNextMonth,
  DateAdd(day, (@Wed -DatePart(weekday, @FONM))%7, @FONM) firstWedInNextMonth,
  DateAdd(day, (@Thu -DatePart(weekday, @FONM))%7, @FONM) firstThuInNextMonth,
  DateAdd(day, (@Fri -DatePart(weekday, @FONM))%7, @FONM) firstFriInNextMonth,
  DateAdd(day, (@Sat -DatePart(weekday, @FONM))%7, @FONM) firstSatInNextMonth


 类似资料:
  • 问题内容: 我想获取特定月份/年份中第一个星期一的日期。 我有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道本月的第一个星期一,最好是一个int或Integer值。 例如: 我有2014年和1月(1月),这个月的第一个星期一是6号,所以我想返回6。 问题: 我以为可以做到这一点,但是在设置日历(仅提供年和月)时已经遇到了麻烦。此外,我不确定如何使用返回实际的月

  • 问题内容: 我正在尝试编写这样的日历功能 是整数(1、2、3 …),$ day是一天(Sun,Mon,…)或数字,以较容易的一个为准。方向有些混乱,因为它进行了不同的计算。 举个例子 它使用默认值,并获得5月的第一个星期日,即2009-05-03。如果我们打电话 ,它将返回5月的第二个最后一个星期日,即2009-05-24。 问题答案: 也许可以使其更快。。。 代码非常有趣。 请注意,前进1表示反

  • 我想知道特定月份/年份的第一个星期一的日期。 我所拥有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道这个月的第一个星期一,最好是整数或整数值。 例如: 我有2014年和1月,这个月的第一个星期一是6号,所以我想返回6号。 问题: 我原以为我可以用做到这一点,但我在设置日历时遇到了问题,因为只有年份和月份可用。此外,我不知道如何使用返回月份/年份的第一个星期一。

  • 问题内容: 我正在一个项目中,要求将日期计算为给定月份的最后一个星期五。我认为我有一个仅使用标准Java的解决方案,但我想知道是否有人知道更简洁或更有效的方法。以下是我今年测试的内容: 问题答案: 根据marked23的建议:

  • 问题内容: 如何在where子句中使用下个月的第一天和最后一天? 问题答案: 采用:

  • 问题内容: 我对此有些挣扎。 我想设置日历为: 2012年2月的第三个星期一。 而且我找不到使用Java进行此操作的任何方法。 例如,如果我想将日历设置为2011年圣诞节,则可以通过以下方式轻松实现: 但是我对于如何设置它(比如说2012年阵亡将士纪念日)感到困惑,那是5月的最后一个星期一。这是我的代码,但显然是错误的,因为我根本无法假设5月的最后一个星期一将在那年5月的第4周: 关于如何以编程方