sql - How to get First and Last for every month -


how add first 1 10 dates month , add last 20 30 days of month.

declare @today date = '2016-11-05'  select  convert(varchar(5),datepart (dw, @today)-1 )+' days of '+ left(datename(month,@today),3) comments 

i'm getting

comments 6 days of nov 

how :

comments first 6 days of nov 

if give date '2016-11-24'

need output

     comments      last 4 days of nov 

suggest me way proceed

use case statement:

select (case when day(@today) <= 10 'first '              when day(@today) >= 20 'last '              else ''         end) + convert(varchar(5), datepart(dw, @today)-1 ) + ' days of ' +         left(datename(month, @today), 3) comments 

edit:

oh, see original query not right. want more this:

select (case when day(@today) <= 10 'first ' + datename(day, @today) + ' days of ' + left(datename(month, @today), 3)              when day(@today) >= 20 , month(@today) in (1, 3, 5, 7, 8, 10, 12) 'last ' + cast(31 - day(@today) varchar(255))              when day(@today) >= 20 , month(@today) in (4, 6, 9, 11) 'last ' + cast(30 - day(@today) varchar(255))              when day(@today) >= 20 , month(@today) in (2) , year(@today) % 4 = 0 'last ' + cast(29 - day(@today) varchar(255))              when day(@today) >= 20 , month(@today) in (2) , year(@today) % 4 <> 0 'last ' + cast(29 - day(@today) varchar(255))              else cast(day(@today) varchar(255))         end)  + ' days of ' + left(datename(month, @today), 3) comments 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -