年周格式怎么改成日期格式---马上送分

QMSKUMA 2007-04-04 10:41:23
我的年周格式是 200714

我需要的是 20070401 和 20070407

高手指点指点
...全文
296 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrb2008 2007-04-04
  • 打赏
  • 举报
回复
create table #
(col datetime)
declare @s varchar(10),@i int
set @s='200714'
set @i=0
while @i<7
begin
insert into # select dateadd(day,@i,dateadd(wk,cast(right(@s,2) as int)-1,convert(datetime,left(@s,4)+'-1-1')))
set @i=@i+1
end
select * from #
drop table #
/*
col
-----------------------
2007-04-02 00:00:00.000
2007-04-03 00:00:00.000
2007-04-04 00:00:00.000
2007-04-05 00:00:00.000
2007-04-06 00:00:00.000
2007-04-07 00:00:00.000
2007-04-08 00:00:00.000
*/
believe209 2007-04-04
  • 打赏
  • 举报
回复
学习!
zlp321002 2007-04-04
  • 打赏
  • 举报
回复
declare @time int,@year int,@month int
set @time=200714
set @year=left(@time,4)
set @month=right(@time,2)
select 本周一=dateadd(wk,@month-1,cast(ltrim(@year)+'-1-1' as datetime)),
本周日=dateadd(day,6,dateadd(wk,@month-1,cast(ltrim(@year)+'-1-1' as datetime)))
/*
本周一 本周日
----------------------- -----------------------
2007-04-02 00:00:00.000 2007-04-08 00:00:00.000

(1 行受影响)

*/
dawugui 2007-04-04
  • 打赏
  • 举报
回复
declare @str as varchar(6)
set @str = '200714'
declare @year as datetime
set @year = cast(left(@str,4) + '-01-01' as datetime)
declare @week as int
set @week = cast(substring(@str,5,len(@str)) as int)

SELECT DATEADD(wk, DATEDIFF(wk,0,dateadd(week,@week,@year)), 0)-1 as 周日, DATEADD(wk, DATEDIFF(wk,0,dateadd(week,@week,@year)), 0)+5 as 周六

周日 周六
------------------------------------------------------ ------------------------------------------------------
2007-04-08 00:00:00.000 2007-04-14 00:00:00.000

(所影响的行数为 1 行)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧