在SQL Server 2000中创建月周和工作日的日期

时间:2015-02-28 11:40:42

标签: sql sql-server-2000

在SQL Server 2000中,我有:

  • 年份:2015年,
  • 月:01,
  • 周:4,
  • 周日:2

我需要:2015-01-19

我有:

  • 年份:2015年,
  • 月:01,
  • 周:3,
  • 周日:3

我需要:2015-01-13

等等。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在一个月的第一周你的意思是相当模糊的,但是从第一天开始的一周的通用定义,你可以用日期算术做到这一点。结果如下:

select convert(datetime,
               @year * 10000 + @month*100 + (@week - 1) * 7 + (@weekday - 1),
               112)

老实说,我不能100%确定SQL Server 2000是否能正确转换日期。您可能需要先将其强制转换为字符串:

select convert(datetime,
               cast(@year * 10000 + @month*100 + (@week - 1) * 7 + (@weekday - 1) as varchar(8)),
               112)

而且,正如评论所说,您不希望使用不受支持的软件。现在是升级的时候了。

答案 1 :(得分:0)

也许是这样的?

--SET DATEFIRST 7 --this is the default; but include & tweak as needed for your culture

declare @Year int = 2015
,@Month int = 01
,@Week int = 4
,@WeekDay int = 2
,@date date

set @date = CAST(cast(@year as nvarchar(4)) + '-' + cast(@month as nvarchar(2)) + '-01' as date)
set @date = DATEADD(day,(@week - datepart(week,@date)) * 7,@date) 
set @date = DATEADD(day,(@weekDay - datepart(weekday,@date)) % 7,@date) 

select @date --2015-01-19

select DATEPART(week,@date) --4
select DATEPART(weekday,@date) --2