请教大家:
周别定义 自周日 ~ 周六 例如: 2012年第一周 01/01~01/07天数为 7天,以此类推;
想得出的结果如:
年份 周别 日期范围
2012 1 2012/01/01~2012/01/07
.
.
.
先谢谢了!
------解决方案--------------------
- SQL code
;with ach as( select dateadd(dd,number,cast(ltrim(year(getdate()))+'-01-01' as datetime)) date from master..spt_values where [type] = 'p' and number between 0 and 400),cte as( select * from ach where year(date) = year(getdate()))select datepart(wk,date) as wk,min(date) mindate,max(date) maxdatefrom ctegroup by datepart(wk,date)/********************wk mindate maxdate----------- ----------------------- -----------------------1 2012-01-01 00:00:00.000 2012-01-07 00:00:00.0002 2012-01-08 00:00:00.000 2012-01-14 00:00:00.0003 2012-01-15 00:00:00.000 2012-01-21 00:00:00.0004 2012-01-22 00:00:00.000 2012-01-28 00:00:00.0005 2012-01-29 00:00:00.000 2012-02-04 00:00:00.0006 2012-02-05 00:00:00.000 2012-02-11 00:00:00.0007 2012-02-12 00:00:00.000 2012-02-18 00:00:00.0008 2012-02-19 00:00:00.000 2012-02-25 00:00:00.0009 2012-02-26 00:00:00.000 2012-03-03 00:00:00.00010 2012-03-04 00:00:00.000 2012-03-10 00:00:00.00011 2012-03-11 00:00:00.000 2012-03-17 00:00:00.00012 2012-03-18 00:00:00.000 2012-03-24 00:00:00.00013 2012-03-25 00:00:00.000 2012-03-31 00:00:00.00014 2012-04-01 00:00:00.000 2012-04-07 00:00:00.00015 2012-04-08 00:00:00.000 2012-04-14 00:00:00.00016 2012-04-15 00:00:00.000 2012-04-21 00:00:00.00017 2012-04-22 00:00:00.000 2012-04-28 00:00:00.00018 2012-04-29 00:00:00.000 2012-05-05 00:00:00.00019 2012-05-06 00:00:00.000 2012-05-12 00:00:00.000...
------解决方案--------------------
有函数的,自己拿去改一下
SQL季度函数
SELECT DATEPART(quarter,GETDATE()) --获取当前季度
这个季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
上个季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-1, 0)
上上个季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-2, 0)
上上上个季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-3, 0)
......
n个季度前的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-n, 0)
这个季度的最后一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())+1, -1)
上个季度的最后一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), -1)
上上个季度的最后一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-1, -1)
n个季度前的最后一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate())-n+1, -1)
一个月第一天的SQL 脚本:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
当天的半夜
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。