rendered paste bodyselect *
from (
select b.name,
convert(datetime, dateadd(day, 1-day(b.date), b.date), 20) as dt1,
convert(datetime, dateadd(month, 1, dateadd(day, 1-day(b.date),b.date)) - 1, 20) as dt2
from battles b
) tt
----
Guadalcanal 1942-11-01 00:00:00.000 1942-11-30 00:00:00.000
North Atlantic 1941-05-01 00:00:00.000 1941-05-31 00:00:00.000
North Cape 1943-12-01 00:00:00.000 1943-12-31 00:00:00.000
Surigao Strait 1944-10-01 00:00:00.000 1944-10-31 00:00:00.000
---------
select tt.name, left(tt.dt1, charindex(' ', tt.dt1))
from (
select b.name,
convert(datetime, dateadd(day, 1-day(b.date), b.date), 20) as dt1,
convert(datetime, dateadd(month, 1, dateadd(day, 1-day(b.date),b.date)) - 1, 20) as dt2
from battles b
) tt
----
Guadalcanal Nov
North Atlantic May
North Cape Dec
Surigao Strait Oct