查找今年/上一周的开始日期/结束日期



我在SQL方面遇到了麻烦……看看你是否可以帮助5和6

业务需求

  1. 我有我的日期
  2. 我想让SQL给我myDate的周数
  3. 我希望SQL返回myDate今年的周开始日期
  4. 我希望SQL为myDate返回今年的周末日期
  5. (需要帮助)我希望SQL为myDate返回去年的周开始日期
  6. (需要帮助)我希望SQL为myDate返回去年的周末日期

关于数据的评论

  1. 提供日期
  2. 日期为2014年第19周
  3. 2014年第19周星期日
  4. 2014年第19周的星期六
  5. 2013年第19周的星期日(需要SQL帮助获取此日期)
  6. 2013年第19周的星期六(需要SQL帮助获取此日期)

样本数据

  1. 2014年5月6日
  2. 19
  3. 2014年5月4日
  4. 2014年5月10日
  5. 2013年5月5日
  6. 2013年5月11日

SQL Queseries

  1. NA
  2. 选择日期部分(星期,'05/06/2014')
  3. 选择CONVERT(varchar(50),(DATEADD(dd,@@DATEFIRST-DATEPART(dw,'05/06/2014')-6,'05.06/2014'),101)
  4. 选择CONVERT(varchar(50),(DATEADD(dd,@@DATEFIRST-DATEPART(dw,'05/06/2014'),'05.06/2014'),101)
  5. 伙计…我在这里打sql块
  6. 再次。。。点击此处的sql块

这就是您需要的吗??

SELECT CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw,  DATEADD(year, -1, '05/06/2014')) - 6, DATEADD(year, -1, '05/06/2014'))), 101)
SELECT CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw,  DATEADD(year, -1, '05/06/2014')), DATEADD(year, -1, '05/06/2014'))), 101)

此外,如果你是这样的话,我会使用一些变量。

declare @date Datetime = '05/06/2014'
declare @datePreviousYear Datetime = DATEADD(year, -1, @date)
declare @currentYeardateCalculated int = @@DATEFIRST - DATEPART(dw,  @date)
declare @lastYearDateCalculated int = @@DATEFIRST - DATEPART(dw,  @datePreviousYear)
--1
SELECT @date
--2
SELECT datepart(week,@date )
--3
SELECT  CONVERT(varchar(50), (DATEADD(dd, @currentYeardateCalculated - 6, @date)), 101)
--4
SELECT CONVERT(varchar(50), (DATEADD(dd, @currentYeardateCalculated, @date)), 101)
--5
SELECT  CONVERT(varchar(50), (DATEADD(dd, @lastYearDateCalculated - 6,@datePreviousYear)), 101)
--6
SELECT CONVERT(varchar(50), (DATEADD(dd, @lastYearDateCalculated , @datePreviousYear)), 101)

最新更新