SQL Query per trovare l’ultimo giorno del mese

Devo trovare l’ultimo giorno di un mese nel seguente formato:

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

Qualcuno per favore aiuto.

Prova questo –

 CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth] ( @Date DATETIME ) RETURNS DATETIME AS BEGIN RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0)) END 

Query:

 DECLARE @date DATETIME SELECT @date = '2013-05-31 15:04:10.027' SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0)) 

Produzione:

 ----------------------- 2013-05-31 00:00:00.000 

So che questa domanda era per SQL Server 2005, ma ho pensato di menzionare – a partire da SQL 2012, ora c’è una funzione EOMONTH() che ottiene l’ultimo giorno del mese. Per ottenerlo nel formato specificato dal richiedente originale dovresti eseguire il cast su un valore datetime .

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

SQL Server 2012 introduce la funzione 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) 

Per controllare la corsa:

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

Calcolare l’ultima data del mese è un calcolo abbastanza semplice –

  1. Trova il conto totale dei mesi fino alla data odierna usando la funzione DATEDIFF (.., .., ..) – Seleziona DATEDIFF (MM, 0, GETDATE ())

Output – 1374, se l’output di getdate () è “2014-07-23 19: 33: 46.850”

  1. Incremento di 1 nel totale dei mesi: selezionare DATEDIFF (MM, 0, GETDATE ()) + 1

Uscita – 1375, se l’output di getdate () è “2014-07-23 19: 33: 46.850”

  1. Ottieni la prima data del mese successivo: seleziona DATEADD (MM, DATEDIFF (MM, 0, GETDATE ()) + 1,0)

Output – ‘2014-08-01 00: 00: 00.000’, Se l’output di getdate () è “2014-07-23 19: 33: 46.850”

  1. Sottrai per -1 nella prima data del prossimo mese, che restituirà l’ultima data del mese corrente – Seleziona DATEADD (DD, -1, DATEADD (MM, DATEDIFF (MM, 0, GETDATE ()) + 1,0))

Output – ‘2014-07-31 00: 00: 00.000’, Se l’output di getdate () è “2014-07-23 19: 33: 46.850”

Nello stesso modo di calcolo possiamo ottenere il – 1. Ultima data del prossimo mese 2. Ultima data del mese precedente e così via …

Spero che questo articolo ti possa aiutare.

Selezionare DATEADD (DAY, – (DAY (DATEADD (MONTH, 1, GETDATE ()))), DATEADD (MONTH, 1, GETDATE ()))

Questo funziona alla grande in T-sql ..

Sostituire il GETDATE () della query con il nome della colonna.

 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 

http://php.net/manual/en/function.cal-days-in-month.php

La durata in giorni del mese selezionato nel calendario specificato