Hello,
The proposed solution doesn't work with other languages:
SET LANGUAGE GERMAN
SELECT Datename(m, TheDate)TheMonthName, TheDate, Month(TheDate) TheMonth FROM (
SELECT '19000101' AS TheDate
UNION ALL SELECT '19000201'
UNION ALL SELECT '19000301'
UNION ALL SELECT '19000401'
UNION ALL SELECT '19000501'
UNION ALL SELECT '19000601'
UNION ALL SELECT '19000701'
UNION ALL SELECT '19000801'
UNION ALL SELECT '19000901'
UNION ALL SELECT '19001001'
UNION ALL SELECT '19001101'
UNION ALL SELECT '19001201'
) TheDates
WHERE LEN(Datename(m, TheDate))%2 = 0
Changed language setting to Deutsch.
TheMonthName TheDate TheMonth
------------------------------ -------- -----------
Januar 19000101 1
März 19000301 3
Juni 19000601 6
Juli 19000701 7
August 19000801 8
November 19001101 11
Dezember 19001201 12
Another solution could be the following (the month list must be adjusted for your specific language):
SET LANGUAGE English
SELECT Datename(m, TheDate)TheMonthName, TheDate, Month(TheDate) TheMonth FROM
(SELECT '19000101' AS TheDate
UNION ALL SELECT '19000201'
UNION ALL SELECT '19000301'
UNION ALL SELECT '19000401'
UNION ALL SELECT '19000501'
UNION ALL SELECT '19000601'
UNION ALL SELECT '19000701'
UNION ALL SELECT '19000801'
UNION ALL SELECT '19000901'
UNION ALL SELECT '19001001'
UNION ALL SELECT '19001101'
UNION ALL SELECT '19001201') TheDates
WHERE 'FebruaryJuneJulyAugustNovemberDecember' LIKE '%' + DATENAME(m, TheDate) + '%'
Results:
Changed language setting to us_english.
TheMonthName TheDate TheMonth
------------------------------ -------- -----------
February 19000201 2
June 19000601 6
July 19000701 7
August 19000801 8
November 19001101 11
December 19001201 12
Best Regards,
Chris Büttner