webentwicklung-frage-antwort-db.com.de

SQL-Abfrage zum Ermitteln des letzten Tages des Monats

Ich muss den letzten Tag eines Monats im folgenden Format finden:

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

Jeder hilft bitte aus.

34
prabu R

Probier diese -

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

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

END

Abfrage:

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

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

Ausgabe:

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

Ich weiß, dass diese Frage für SQL Server 2005 war, aber ich dachte, ich würde erwähnen. Ab SQL 2012 gibt es jetzt eine EOMONTH()-Funktion, die den letzten Tag des Monats erhält. Um es in dem vom ursprünglichen Fragesteller angegebenen Format zu erhalten, müssten Sie es in eine datetime umwandeln.

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

SQL Server 2012 führt die eomonth-Funktion ein:

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)

Lauf prüfen:

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

Berechnen Sie das letzte Datum des Monats ist recht einfache Berechnung -

  1. Finden Sie die Gesamtzahl der Monate bis zum heutigen Datum mit der Funktion DATEDIFF (.., .., ..) -Wählen Sie DATEDIFF (MM, 0, GETDATE ()) aus.

Ausgabe - 1374, wenn die Ausgabe von getdate () "2014-07-23 19: 33: 46.850" ist

  1. Erhöhen Sie die Gesamtmonatanzahl um 1. Wählen Sie DATEDIFF (MM, 0, GETDATE ()) + 1 aus

Ausgabe - 1375, wenn die Ausgabe von getdate () "2014-07-23 19: 33: 46.850" ist

  1. Holen Sie sich das erste Datum des nächsten Monats. Wählen Sie DATEADD (MM, DATEDIFF (MM, 0, GETDATE ()) + 1,0)

Ausgabe - '2014-08-01 00: 00: 00.000', wenn getdate () die Ausgabe "2014-07-23 19: 33: 46.850" ist

  1. Subtrahieren Sie um -1 bis zum ersten Tag des nächsten Monats, der das letzte Datum des aktuellen Monats zurückgibt. 0))

Ausgabe - '2014-07-31 00: 00: 00.000', Wenn die Ausgabe von getdate () "2014-07-23 19: 33: 46.850" lautet

Auf dieselbe Art und Weise der Berechnung können wir das - 1 erreichen. Letzter Tag des nächsten Monats 2. Letztes Datum des Vormonats Und so weiter ...

Ich hoffe, dieser Artikel wird helfen.

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

Wählen Sie DATEADD (DAYADD - DAYADD (MONAT, 1, GETDATE ())), DATEADD (MONAT, 1, GETDATE ())

Das funktioniert gut in T-sql .. 

Ersetzen Sie das GETDATE () der Abfrage durch Ihren Spaltennamen. 

0
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,[email protected]+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