• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 203
  • Last Modified:

Quick sql help

Hi,
Please have a look at the sql below.
How can I get the week of the month in this sql?
I.e weeks as 1, 2 ,3 ,4 for every month may be in  another column

THanks
select model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date) as varchar(10)) + '/' +  cast(DatePart(ww, date) as varchar(10)) as date1, DatePart(ww, date)  as week1, count(MAN) as count1
from table
where DatePart(year, date) >= 2010
group by model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date)  as varchar(10))+ '/' +  cast(DatePart(ww, date) as varchar(10)) , DatePart(ww, date)

Open in new window

0
SameerMirza
Asked:
SameerMirza
  • 8
  • 3
  • 2
  • +1
1 Solution
 
HainKurtSr. System AnalystCommented:
what does this mean "week of the month"?
0
 
HainKurtSr. System AnalystCommented:
0
 
HainKurtSr. System AnalystCommented:
maybe this

DATEPART(DAY, GETDATE() - 1) / 7 + 1 AS theWeekWithinMonth
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
QuinnDesterCommented:
not sure if you want the week of the curent month or the number of the current week.

the code Hankurt gave you will give you the number of the week in the current month, this will give you the number of the current week

SELECT DATEPART( wk, GETDATE() )
0
 
HainKurtSr. System AnalystCommented:
or maybe this

DatePart(ww, @date) - DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date))
0
 
HainKurtSr. System AnalystCommented:
the one i posted above @ 34908746 gives you the diff between weeknumber of a date and the weeknumber of 1st day of that date

@date = 2011-02-16 -- current date
DatePart(ww, @date) = 8 -- week number of current date
dateadd(day, -datepart(day, @date)+1, @date) = 2011-02-01 -- first day of current date
DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date)) = 6 - week number of above

and the differnce is what you want I guess:

8-6 = 2

or maybe +1 is what you want

DatePart(ww, @date) - DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date)) +1


0
 
SameerMirzaAuthor Commented:
I am lost...
how would tackle years in this one?
0
 
HainKurtSr. System AnalystCommented:
ok, summary:

this is what you want

DatePart(ww, date) - DATEPART(ww, dateadd(day, -datepart(day, date)+1, date)) +1
or
DATEPART(DAY, date- 1) / 7 + 1

here is the implemenattion in your query:

select model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date) as varchar(10)) + '/' +  cast(DatePart(ww, date) as varchar(10)) as date1, DatePart(ww, date)  as week1, count(MAN) as count1, DATEPART(DAY, date- 1) / 7 + 1 week_of_month
from table
where DatePart(year, date) >= 2010
group by model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date)  as varchar(10))+ '/' +  cast(DatePart(ww, date) as varchar(10)) , DatePart(ww, date), DATEPART(DAY, date- 1) / 7 + 1

if this is not what you want, try the other option
0
 
Eric3141Commented:
Try this.  I'm not at work so cannot verify but should be close.  







Declare
   @Date         datetime

-- Get first day of the week that Jan 1st falls in
Set @Date = select DATEADD(wk, DATEDIFF(wk,0,’01-Jan-2011’), 0);


While datepart(year, @Date) = ‘2011’
     BEGIN
	Select @Start_Date, datepart(week, @Date)

         -- add one week
         SET @Date = DateAdd(day, 7, @Date)
     END

Open in new window

0
 
Eric3141Commented:
Sorry -- a typo above.  Use this instead.
Declare
   @Date         datetime

-- Get first day of the week that Jan 1st falls in
Set @Date = select DATEADD(wk, DATEDIFF(wk,0,’01-Jan-2011’), 0);


While datepart(year, @Date) = ‘2011’
     BEGIN
	Select @Date, datepart(week, @Date)

         -- add one week
         SET @Date = DateAdd(day, 7, @Date)
     END

Open in new window

0
 
HainKurtSr. System AnalystCommented:
you can delete

"DatePart(ww, date)  as week1," from select and delete "DatePart(ww, date)," from group by

select model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date) as varchar(10)) + '/' +  cast(DatePart(ww, date) as varchar(10)) as date1, count(MAN) as count1, DATEPART(DAY, date- 1) / 7 + 1 week_of_month
from table
where DatePart(year, date) >= 2010
group by model, cast(DatePart(year, date) as varchar(10)) + '/' + cast( DatePart(quarter, date)  as varchar(10))+ '/' +  cast(DatePart(ww, date) as varchar(10)) , DATEPART(DAY, date- 1) / 7 + 1

if you dont need that column at all after adding week_of_month
0
 
SameerMirzaAuthor Commented:
First of all thanks alot for help. But may be I need a little more :)
DATEPART(DAY, date- 1) / 7 + 1 as week_of_month --- how does this work?

(7-1)/7+1 - 1.857 = 2 ----

when I see it against record. I see,

test      2010/1/2           14        1

according to my understanding it should have been showing

test      2010/1/2           14        3

Isnt it?
0
 
SameerMirzaAuthor Commented:
its kool. as I can see and work out what to add.
But may be you can post further scomments if you like.

Thanks
0
 
HainKurtSr. System AnalystCommented:
Here I put all logic discussed here

I prefer this one because it looks more logical

DatePart(ww, @date) - DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date)) +1

check this query, wom3 is more accurate... if you can define what is the first week of a month, then we can write the qry... for now you can use wom3 :)

(change -5 to any number to test that day, +/- any number)
declare @date datetime = getdate()-5;

select @date date, 
DatePart(ww, @date) ww_date,
DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date)) ww_1stDayofmonth,
DATEPART(DAY, @date - 1) / 7 + 1 wom1,
DATEPART(DAY, @date) / 7 + 1 wom2,
DatePart(ww, @date) - DATEPART(ww, dateadd(day, -datepart(day, @date)+1, @date)) +1 wom3

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 8
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now