Domanda

Ho un appuntamento, supponiamo data di oggi

declare @d datetime
set @d = '20101014'

Ho bisogno

select @d - <six month>

dove è il numero effettivo di giorni che contiene ultimi sei mesi, a partire dal @d.

È stato utile?

Soluzione

È possibile utilizzare DATEADD :

select DATEADD(month, -6, @d)

Modifica : se è necessario il numero di giorni fino a 6 mesi fa è possibile utilizzare DATEDIFF :

select DATEDIFF(day, @d, DATEADD(month, -6, @d))

Altri suggerimenti

Controllare anche questo in su (sviluppo di questo tema):

ho bisogno di scegliere l'algoritmo a seconda della condizione - se ci sono altrettanti giorni tra due date come in sei mesi (fa l'ultima data)

.

L'ho fatto in questo modo:

    case
      when
        DATEDIFF(day, DATEADD(month, -6, @pDateEnd), @pDateEnd)
        >
        DATEDIFF(day, @pDateBegin, @pDateEnd)
      then 'there is no 6-month difference between two dates'
      else 'there is 6-month difference ore more between two dates'
    end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top