2016-11-09 125 views
3

我該如何獲得開始日期結束日期的月份名稱?不是按日期,而是按月份編號。按月份名稱獲取開始日期和結束日期,而不是月份編號

例如,這會讓我獲得本月的第一天。輸入是一個日期類型,不像我想要的那樣是字符串。

SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) 

我想要的是輸入月份名稱字符串像'3月'不是3,並得到2016/03/01和2016/03/31。我真的不知所措,並感謝任何/所有的幫助。

回答

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 
+0

謝謝,工程就像一個魅力。我可以在某些表格列中使用CTE,如使用UDF嗎? – fasih

+0

取決於,你可以把它放在一個函數中。使用iTVF獲得性能。 –

+0

謝謝一堆。我會稍後嘗試一下並回復你。 – fasih

相關問題