Sql取當月最後一天

在SQL中,你可以使用DATEPART函數來取得當月的最後一天。以下是一個例子,假設你有一個Date欄位,其中儲存了日期資料:

SELECT DATEPART( month, Date ) AS [Month],
       DATEPART( day, DATEADD( month, DATEDIFF( month, 0, Date ), 0 ) ) AS [LastDayOfMonth]
FROM   YourTable;

在上面的例子中,DATEADDDATEDIFF函數用來計算當月的最後一天。DATEDIFF計算兩個日期之間的月數差異,DATEADD使用這個差異來增加一個月到原始日期上,然後DATEPART取出增加後的日期的最後一天。

如果你想要直接取得當月的最後一天,而不需要參考一個Date欄位,你可以使用GETDATE函數來取得當前日期,然後應用上面的邏輯:

SELECT DATEPART( month, GETDATE() ) AS [Month],
       DATEPART( day, DATEADD( month, DATEDIFF( month, 0, GETDATE() ), 0 ) ) AS [LastDayOfMonth]
FROM   (SELECT 1) T;

這個例子使用一個虛擬的T表來產生一個簡單的結果集,因為它只需要執行一次計算。(SELECT 1)是一個常見的技巧,用來產生一個單一的行,以便SQL Server可以執行計算並返回結果。

請注意,這個方法假設當月的天數是固定的,例如不是在二月份。如果你需要考慮閏年的因素,你可能需要一個更複雜的解決方案來處理二月份的天數變化。