Question of the Week -08/04/2014



Suppose we need to find out the name of all the months in a given year (Year will be given as an input parameter) where first day of the month falls on weekend (Saturday or Sunday). 

So what should be the query/stored procedure to get the above result?

DMCA.com


Discover more from Technology with Vivek Johari

Subscribe to get the latest posts sent to your email.

30 comments

  1. create proc techmixing_8_4_14 @yr as numeric
    as
    SET NOCOUNT ON;
    set datefirst 1 — to set first day as monday

    declare @dt as varchar(8);
    declare @count as numeric=1
    create table #t1 (mn varchar(20)) — Temporary table
    while @count <=12
    begin

    set @dt=convert(varchar(4),@yr ) + isnull(REPLICATE('0',2-len(convert(varchar(2),@count))),'')+convert(varchar(2),@count)+ '01'

    set @count=@count+1
    if datepart(dw,convert(date,@dt,112 )) >=6
    begin
    insert into #t1 (mn) select datepart(MM,@dt)
    end

    end
    select * from #t1

    go

    exec techmixing_8_4_14 2012

  2. Just to little modify the Bharat answer by adding "No count off" in the end.

    Create proc techmixing_8_4_14 @yr as numeric
    as
    begin
    SET NOCOUNT ON;
    set datefirst 1 — to set first day as monday

    declare @dt as varchar(8);
    declare @count as numeric=1
    create table #t1 (mn varchar(20)) — Temporary table
    while @count <=12
    begin

    set @dt=convert(varchar(4),@yr ) + isnull(REPLICATE('0',2-len(convert(varchar(2),@count))),'')+convert(varchar(2),@count)+ '01'

    set @count=@count+1
    if datepart(dw,convert(date,@dt,112 )) >=6
    begin
    insert into #t1 (mn) select datename(MM,@dt)
    end

    end
    select * from #t1
    set nocount off
    end
    go

    exec techmixing_8_4_14 2012

  3. Declare @Months Varchar(60)

    Declare @loop int
    SET @loop=1

    WHILE @loop<=12
    BEGIN
    IF(Datename(dw,'2014/'+str(@loop)+'/1') in ('Saturday','Sunday'))
    BEGIN
    SET @Months=COALESCE(@Months+ ', ', '')+ DateName( month , DateAdd( month , @loop , 0 ) -1)
    END
    SET @loop=@loop+1
    END

    Print @Months

  4. Pingback: vegus
  5. Pingback: link vao w88
  6. Pingback: w88th
  7. Pingback: Empire Market
  8. Pingback: fun88asia
  9. Pingback: Dream Market
  10. Pingback: cbdque
  11. Pingback: Empire Market
  12. Pingback: Tochka Market
  13. Pingback: dang ky v9bet
  14. Pingback: keluaran hkg
  15. Pingback: cdrqq
  16. Pingback: mega poker99
  17. Pingback: www.1lapakqq.site
  18. Pingback: sbobet888
  19. Pingback: poker 99

Leave a Reply