如何获得月份名称的开始日期和结束日期?不是按日期,而是按月份编号。
例如,这会让我获得当月的第一天。输入是一种日期类型,而不是我想要的字符串。
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)
我想要的是在字符串中输入月份名称,例如' March'不是3并获得2016/03/01和2016/03/31。我真的很不知所措,感谢任何/所有的帮助。
答案 0 :(得分:3)
您可以创建CTE以获取月份编号:
DECLARE @month VARCHAR(10) = 'March';
WITH CteMonths(n, m) AS(
SELECT 1, 'January' UNION ALL
SELECT 2, 'February' UNION ALL
SELECT 3, 'March' UNION ALL
SELECT 4, 'April' UNION ALL
SELECT 5, 'May' UNION ALL
SELECT 6, 'June' UNION ALL
SELECT 7, 'July' UNION ALL
SELECT 8, 'August' UNION ALL
SELECT 9, 'September' UNION ALL
SELECT 10, 'October' UNION ALL
SELECT 11, 'November' UNION ALL
SELECT 12, 'December'
)
SELECT
DATEADD(MONTH, n - 1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)),
DATEADD(DAY, -1, DATEADD(MONTH, n, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)))
FROM CteMonths
WHERE m = @month