日期:2014-05-18  浏览次数:20429 次

在SQL里怎样计算得到这样的日期?
怎样计算:
2007年第10周的周一是几月几号?
得到了几月几号之后,再加成12天后,又是几月几号?

那只是例子,可能是2008年,第20周,周二等.




------解决方案--------------------
--得到了几月几号之后,再加成12天后,又是几月几号?
select dateadd(day,12,getdate())
------解决方案--------------------
好象是这么....

-- 2007年第10周的周一是几月几号?
SELECT DATEADD(DAY, 10 * 7, 2007-1-1)
-- 得到了几月几号之后,再加成12天后,又是几月几号
SELECT DATEADD(DAY, 12, DATEADD(DAY, 10 * 7, 2007-1-1))
------解决方案--------------------
set datefirst 1
----2007年第10周的周一是几月几号
select dateadd(week,10, '2009-01-01 ')
----得到了几月几号之后,再加成12天后,又是几月几号?
select dateadd(day,12,dateadd(week,10, '2009-01-01 '))

/*
结果1:
2009-03-12 00:00:00.000

结果2:
2009-03-24 00:00:00.000
*/


------解决方案--------------------
抱歉,上面的回复把2007写成2009了,更正一下:

----设置星期一作为每周的第一天
set datefirst 1
----2007年第10周的周一是几月几号
select dateadd(week,10, '2007-01-01 ')
----得到了几月几号之后,再加成12天后,又是几月几号?
select dateadd(day,12,dateadd(week,10, '2007-01-01 '))

/*
结果1:
2007-03-12 00:00:00.000

结果2:
2007-03-24 00:00:00.000
*/

------解决方案--------------------
LZ的意思是不要年份?
先用LS大大的方法得到日期,然后截断用substring
表联合用 left jion 就可以了
看你发了那么多贴LZ辛苦了
------解决方案--------------------
CREATE FUNCTION fun_date(@year INT, @week INT, @weekday INT)--数据范围@year 1753--9999;@week 1--53;weekday 1--7(Sunday--Saturday)
RETURNS DATETIME
AS
BEGIN
DECLARE @date DATETIME--, @year INT, @week INT, @weekday INT
SET @date = RTRIM(@year)+ '-1-1 '
SET @date = @date + (@week-1)*7 + @weekday - 2
RETURN @date
END

--2007年第10周的周一是几月几号?
SELECT dbo.fun_date(2007, 10, 2)

-----------------------
2007-03-05 00:00:00.000

(1 行受影响)


--得到了几月几号之后,再加成12天后,又是几月几号?
SELECT dbo.fun_date(2007, 10, 2) + 12

-----------------------
2007-03-17 00:00:00.000

(1 行受影响)


--2008年,第20周,周二.
SELECT dbo.fun_date(2008, 20, 3)

-----------------------
2008-05-14 00:00:00.000

(1 行受影响)