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.
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
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)
SQL Server 2012 introduit la fonction eomonth
:
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)
Pour vérifier l'exécution:
print dateadd(month,1+datediff(month,0,@date),-1)
Calculer la dernière date du mois est un calcul assez simple -
Sortie - 1374, si la sortie de getdate () est "2014-07-23 19: 33: 46.850"
Sortie - 1375, si la sortie de getdate () est "2014-07-23 19: 33: 46.850"
Sortie - '2014-08-01 00: 00: 00.000', si la sortie de getdate () est "2014-07-23 19: 33: 46.850"
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.
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
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.
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
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]