Not knowing what the actual inputs and outputs are actually required, all I can give you is currently a predicate for defining a date as the second day of my month:
DATEPART(day,@Date) between 8 and 14 and --Find the second one in the month DATEPART(weekday,@Date) = DATEPART(weekday,'20130319') --Make sure its a Tuesday
(I use a fixed, well-known Tuesday to not know that the DATEFIRST settings are in effect when the request works)
This finds the corresponding Tuesday for the current month, but obviously @Date can be set to any date of interest:
declare @Date datetime set @Date = CURRENT_TIMESTAMP ;with Numbers as (select n from (values (0),(1),(2),(3),(4),(5),(6)) t(n)), PotentialDates as (select DATEADD(day,n,DATEADD(month,DATEDIFF(month,'20010101',@Date),'20010108')) as Date from Numbers ) select * from PotentialDates where DATEPART(weekday,Date) = DATEPART(weekday,'20130319')
(And, hopefully, it is also clear that the query can be part of a larger query, where @Date was instead of the column value, and therefore it can become part of a set-based approach to all of the work)