Vinnaren i pepparkakshustävlingen!
2013-06-11, 09:39
  #1
Medlem
Skulle behöva lite hjälp med hur jag kan använda SQL dateadd för att få följande logik.

Jag har ett datum X och en integer Y, Integer Y står för ett antal månader.

Det jag vill åstadkomma är att jag vill få fram den sista dagen i månaden som blir om man tar datum X + Antal månader Y.

Så tex om X är 2013-05-05 och Y är 1, så ska resultatet bli 2013-06-30.

Tack på förhand.
Citera
2013-06-11, 10:04
  #2
Medlem
boppaloozs avatar
Citat:
Ursprungligen postat av Mr_Fille
Skulle behöva lite hjälp med hur jag kan använda SQL dateadd för att få följande logik.

Jag har ett datum X och en integer Y, Integer Y står för ett antal månader.

Det jag vill åstadkomma är att jag vill få fram den sista dagen i månaden som blir om man tar datum X + Antal månader Y.

Så tex om X är 2013-05-05 och Y är 1, så ska resultatet bli 2013-06-30.

Tack på förhand.
Varierar tyvärr med olika SQL-dialekter. I MySQL finns funktionen LAST_DAY(datum) som returnerar datumet för sista dagen i den månad som datumet innehåller, så jag tror det skulle funka med
Kod:
select LAST_DAY(DATE_ADD("2013-05-05", INTERVAL 1 MONTH))
I MySQL heter det DATE_ADD()
__________________
Senast redigerad av boppalooz 2013-06-11 kl. 10:17.
Citera
2013-06-11, 20:45
  #3
Medlem
desmoduss avatar
Citat:
Ursprungligen postat av Mr_Fille
Skulle behöva lite hjälp med hur jag kan använda SQL dateadd för att få följande logik.

Jag har ett datum X och en integer Y, Integer Y står för ett antal månader.

Det jag vill åstadkomma är att jag vill få fram den sista dagen i månaden som blir om man tar datum X + Antal månader Y.

Så tex om X är 2013-05-05 och Y är 1, så ska resultatet bli 2013-06-30.

Tack på förhand.

I SQL Server 2012 kan man göra såhär:

Kod:
EOMONTH(@x, @y

I tidigare versioner måste man trixa lite (torrkodat):

Kod:
DATEADD(D, -1DATEADD(M,DATEDIFF(M,0,DATEADD(M,@y,@x))+1,0)) 

Med reservation för typos, sitter på mobilen.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback