Combine DateADD and DateDIFF to get the last date of a month
23>
24> -- Creating a User-Defined Function
25>
26> /*
27~ Returns a date representing the last date
28~ of any given month.
29~ */
30> CREATE Function dbo.fn_LastOfMonth(@TheDate DateTime)
31> Returns DateTime
32> AS
33> BEGIN
34> DECLARE @FirstOfMonth DateTime
35> DECLARE @DaysInMonth Int
36> DECLARE @RetDate DateTime
37>
38> SET @FirstOfMonth = DATEADD(mm, DATEDIFF(mm,0,@TheDate), 0)
39> SET @DaysInMonth = DATEDIFF(d, @FirstOfMonth, DATEADD(m, 1, @FirstOfMonth))
40> RETURN DATEADD(d, @DaysInMonth - 1, @FirstOfMonth)
41> END
42> GO
1> select dbo.fn_LastOfMonth( getdate() )
2> GO
-----------------------
2006-10-31 00:00:00.000
(1 rows affected)
1> drop function dbo.fn_LastOfMonth;
2> GO
1>
2>
Related examples in the same category
1. | DATEDIFF: return the difference between two dates | | |
2. | select DATEDIFF(second, '06:46:45', '11:35:00') | | |
3. | select DATEDIFF(quarter, '2001-12-01', '2002-09-30') | | |
4. | Find the number of days between 24th March 2001 and 24th March 1964 | | |
5. | DATEDIFF(yyyy, "24 March 2001","24 March 1964") | | |
6. | DATEDIFF(mi, "24 March 2001","24 March 1964") | | |
7. | DATEDIFF(wk, "24 March 2001","24 March 1964") | | |
8. | DATEDIFF(m, "24 March 2001","24 March 1964") | | |
9. | DATEDIFF(d, @thisdate, @nextmonth) 'Days between' | | |
10. | DATEDIFF(month, '9-8-1989', '10-17-1991') | | |
11. | DATEDIFF(day, '9-8-1989', '10-17-1991') | | |
12. | Difference in weeks between 7-2-1996 and 8-4-1997 | | |
13. | DATEDIFF(ss, @MyBirthDate, GETDATE()) | | |
14. | select DATEDIFF(hour, '06:46:45', '11:35:00') | | |
15. | select DATEDIFF(minute, '06:46:45', '11:35:00') | | |
16. | Difference between the current time and UTC | | |
17. | DATEDIFF: date difference | | |
18. | Passing a column name to the DATEDIFF() value argument | | |