首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择序列号

选择序列号
EN

Stack Overflow用户
提问于 2012-05-02 21:38:04
回答 2查看 203关注 0票数 0

嗨,我有一个表tab1,其中有2列。这些值如下所示

代码语言:javascript
复制
SL_NO     CAL_DATE
807        2012-03-18
808        2012-03-19
....
1170       2013-03-16

我需要从这个表中选择sl_no的范围是807到1170。除此之外,我还需要为week_no_of_month和week_no_of_year选择2个派生列。

week_no_of_month将是第一周的前7天,第二周的接下来的7天,就像一个周期中的4周。然后,它必须从第1周开始初始化,直到每7天达到4周。

week_no_of_year将从1开始,它将每7天持续一次,直到它达到52。

在这方面请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-02 22:04:49

我不确定你到底需要什么。这将回答您的问题,但我怀疑这不是一个应该被问到的问题:

代码语言:javascript
复制
select datediff (day, 
                 convert(varchar(4), year(CAL_DATE)) + '0101', 
                 CAL_DATE) / 7 + 1 WeekOfYear,
       (day(CAL_DATE) - 1) / 7 + 1 WeekOfMonth

您可以看看Sql Server提供的week numbering

更新

代码语言:javascript
复制
declare @startOfFiscalYear as datetime
set @startOfFiscalYear = '20120318'

select datediff (day, 
                 @startOfFiscalYear, 
                 CAL_DATE) / 7 + 1 WeekOfYear,
       ((datediff (day, @startOfFiscalYear, CAL_DATE)) / 7 % 4) + 1 WeekOfMonth

WeekOfYear就是一年中的某一天除以7。WeekOfMonth是一年中的某一天除以7,然后再除以4,只剩下模数。

票数 1
EN

Stack Overflow用户

发布于 2012-05-02 22:14:53

你有没有试过内置的DATE_PART week,也许你可以用一下?

代码语言:javascript
复制
SELECT DATEPART( WEEK , 'May 2, 2012')

http://www.sqlfiddle.com/#!3/e93ae/2

回复:

对于我在这个范围内读取的第一条记录,这里的周数应该从1开始。这不是正常的日历周数

试试这个:

代码语言:javascript
复制
SELECT 

z.filter_date, x.d, 

(datediff(day,z.filter_date, x.d) / 7) + 1 as week_number

from x
cross join (select convert(date,'march 7, 2012') as filter_date) as z
where x.d >= z.filter_date

数据:

代码语言:javascript
复制
create table x(i int identity(1,1) primary key, d date);

insert into x(d) values
('February 2, 2012'),
('February 5, 2012'),
('March 7, 2012'),
('April 8, 2012'),
('May 9, 2012'),
('June 9, 2012');

输出:

代码语言:javascript
复制
FILTER_DATE D               WEEK_NUMBER
2012-03-07  2012-03-07      1
2012-03-07  2012-04-08      5
2012-03-07  2012-05-09      10
2012-03-07  2012-06-09      14

实时测试:http://www.sqlfiddle.com/#!3/e4837/12

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10414926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档