Ich muss den letzten Tag eines Monats im folgenden Format finden:
"2013-05-31 00:00:00:000"
Jeder hilft bitte aus.
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
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)
SQL Server 2012 führt die eomonth
-Funktion ein:
select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
dateadd(month,1+datediff(month,0,getdate()),-1)
Lauf prüfen:
print dateadd(month,1+datediff(month,0,@date),-1)
Berechnen Sie das letzte Datum des Monats ist recht einfache Berechnung -
Ausgabe - 1374, wenn die Ausgabe von getdate () "2014-07-23 19: 33: 46.850" ist
Ausgabe - 1375, wenn die Ausgabe von getdate () "2014-07-23 19: 33: 46.850" ist
Ausgabe - '2014-08-01 00: 00: 00.000', wenn getdate () die Ausgabe "2014-07-23 19: 33: 46.850" ist
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.
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
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.
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
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]