找出DateTime月份的最早一天與最後一天
--求月份的第一天
SELECT CONVERT(datetime, 0) --1900-01-01 00:00:00.000
SELECT DATEDIFF(MONTH, 0, '2016/01/21') --差1392個月
--用1900-01-01加上1392個月
SELECT DATEADD(mm, DATEDIFF(MONTH, 0, '2016/01/21'), 0) --2016-01-01 00:00:00.000
--求月份的最後一天
SELECT CONVERT(datetime, -1) --1899-12-31 00:00:00.000
SELECT DATEDIFF(MONTH, -1, '2016/01/21') --差1393個月
--用1899-12-31加上1393個月
SELECT DATEADD(mm, DATEDIFF(MONTH, -1, '2016/01/21'), -1) --2016-01-31 00:00:00.000
--寫成Function
CREATE FUNCTION getTheLatestDayOfDate
(
@sourceDate datetime
)
RETURNS datetime
AS
BEGIN
DECLARE @resultDate datetime;
SELECT @resultDate = DATEADD(mm, DATEDIFF(mm, -1, @sourceDate), -1)
RETURN @resultDate
END
GO
SELECT dbo.getTheLatestDayOfDate(CONVERT(DATETIME,'2016/01/21'))