Comment obtenir le dernier date du mois de SQL Server 2008

J'ai créé une fonction "ufngetFirstDateOfMonth" et "ufngetLastDateOfMonth" stockées dans Microsoft SQL Server 2008. Mon but est d'envoyer une certaine date dans la fonction et il sera de retour au premier jour du mois avec '00:00:00' ou la date du dernier mois, avec le '23:59:59'.

J'ai appeler la fonction comme ceci:

exec ufngetLastDateOfMonth('2014-10-15')  

et, normalement, il revient "2014-10-31 23:59:59'
mais quand j'envoie la date du dernier mois ont 31 jours (août, janvier,...):

exec ufngetLastDateOfMonth('2014-10-31')

il retour "2014-10-30 23:59:59' ouragans est pas correct Actally, il devrait être "2014-10-31 23:59:59'

Quelque chose se passe mal ici...

C'est ma fonction:

CREATE FUNCTION [dbo].[ufnLastDateOfMonth](@Date date)
RETURNS varchar(50)

AS
BEGIN

DECLARE @New_Date varchar(50)

select @New_date = cast(dateadd(dd,-(DAY(@Date )),DATEADD(mm,1,@Date ))as varchar(50)) + ' 23:59:59'

RETURN @New_Date

END
Qu'en "dernier jour du mois est un jour avant le 1er du mois prochain 😉
EOMONTH() ? pas sûr que dans sql server 2008
EOMONTH() a besoin de SQL Server 2012

OriginalL'auteur Phattharawit Sombatrat | 2014-10-30