我在SQL方面遇到了麻烦……看看你是否可以帮助5和6
业务需求
- 我有我的日期
- 我想让SQL给我myDate的周数
- 我希望SQL返回myDate今年的周开始日期
- 我希望SQL为myDate返回今年的周末日期
- (需要帮助)我希望SQL为myDate返回去年的周开始日期
- (需要帮助)我希望SQL为myDate返回去年的周末日期
关于数据的评论
- 提供日期
- 日期为2014年第19周
- 2014年第19周星期日
- 2014年第19周的星期六
- 2013年第19周的星期日(需要SQL帮助获取此日期)
- 2013年第19周的星期六(需要SQL帮助获取此日期)
样本数据
- 2014年5月6日
- 19
- 2014年5月4日
- 2014年5月10日
- 2013年5月5日
- 2013年5月11日
SQL Queseries
- NA
- 选择日期部分(星期,'05/06/2014')
- 选择CONVERT(varchar(50),(DATEADD(dd,@@DATEFIRST-DATEPART(dw,'05/06/2014')-6,'05.06/2014'),101)
- 选择CONVERT(varchar(50),(DATEADD(dd,@@DATEFIRST-DATEPART(dw,'05/06/2014'),'05.06/2014'),101)
- 伙计…我在这里打sql块
- 再次。。。点击此处的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)