web-dev-qa-db-fra.com

Requête SQL pour trouver le dernier jour du mois

Je dois trouver le dernier jour du mois dans le format suivant:

"2013-05-31 00:00:00:000"

Quelqu'un s'il vous plaît aider.

34
prabu R

Essaye celui-là -

CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth] 
(
    @Date DATETIME
)
RETURNS DATETIME
AS
BEGIN

    RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))

END

Requête:

DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'

SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))

Sortie:

-----------------------
2013-05-31 00:00:00.000
64
Devart

Je sais que cette question concernait SQL Server 2005, mais je pensais mentionner. Depuis SQL 2012, il existe maintenant une fonction EOMONTH() qui reçoit le dernier jour du mois. Pour obtenir le format spécifié par le demandeur d'origine, vous devez transtyper en une variable datetime.

SELECT CAST(eomonth(GETDATE()) AS datetime)
37
MgSam

SQL Server 2012 introduit la fonction eomonth :

select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
10
Andomar
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
8
RichardTheKiwi
dateadd(month,1+datediff(month,0,getdate()),-1)

Pour vérifier l'exécution:

print dateadd(month,1+datediff(month,0,@date),-1)
3
Aaron Lelevier

Calculer la dernière date du mois est un calcul assez simple -

  1. Trouvez le nombre total de mois jusqu'à la date du jour à l'aide de la fonction DATEDIFF (.., .., ..). Sélectionnez DATEDIFF (MM, 0, GETDATE ()).

Sortie - 1374, si la sortie de getdate () est "2014-07-23 19: 33: 46.850"

  1. Incrément de 1 dans le nombre total de mois -Sélectionnez DATEDIFF (MM, 0, GETDATE ()) + 1

Sortie - 1375, si la sortie de getdate () est "2014-07-23 19: 33: 46.850"

  1. Obtenez la première date du mois prochain -Sélectionnez DATEADD (MM, DATEDIFF (MM, 0, GETDATE ()) + 1,0)

Sortie - '2014-08-01 00: 00: 00.000', si la sortie de getdate () est "2014-07-23 19: 33: 46.850"

  1. Soustrayez de -1 dans la première date du mois prochain, ce qui renverra la dernière date du mois en cours. 0))

Sortie - '2014-07-31 00: 00: 00.000', si la sortie de getdate () est "2014-07-23 19: 33: 46.850"

De la même manière, nous pouvons atteindre le - 1. Dernière date du mois prochain 2. Dernière date du mois précédent Et ainsi de suite ...

J'espère que cet article aidera.

0
Rav
TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT 
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL
0
Subramanian

Sélectionnez DATEADD (DAY, - (DAY (DATEADD (MOIS, 1, GETDATE ()))), DATEADD (MOIS, 1, GETDATE ())

Cela fonctionne très bien dans T-sql .. 

Remplacez le GETDATE () de la requête par votre nom de colonne. 

0
John Christopher
Declare @GivenDate datetime 
Declare @ResultDate datetime 
DEclare @EOMDate datetime 
Declare @Day int 
set @GivenDate=getdate() 
set @GivenDate= (dateadd(mm,1,@GivenDate)) 
set @Day =day(@GivenDate) 
set @ResultDate=dateadd(dd,-@Day+1,@GivenDate) 
select @EOMDate =dateadd(dd,-1 ,@ResultDate) 
select @EOMDate 
0
Deepak
declare @date date=getdate()
declare @st_date date,@end_dt date
set @st_date=convert(varchar(5),year(@date))+'-'+convert(varchar(5),month(@date))+'-01'
set @end_dt=DATEADD(day,-1, DATEADD(month,1,@st_date))
---------**************--------------
select @st_date as [START DATE],@end_dt AS [END DATE]
0
Saikh Rakif