[sql] datum met maand verhogen

Pagina: 1
Acties:
  • 839 views sinds 30-01-2008
  • Reageer

  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
Hallo,

Wat ik wil is de datum verhogen met 1 maand. Nu is dit natuurlijk met dagen makkelijk te doen door +20 te doen voor de datum met 20 dagen hoger. Maar is dit ook te doen d.m.v. +1maand? Ik heb al gezocht en gezocht en alleen die optie van + dagen kan ik vinden. Is dit wat ik wil alleen door bijv php te doen met mktime()?

Hopelijk heeft iemand een antwoord.

Alvast bedankt

Inside The Matrix, they are everyone, and they are no one.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
welke database? Deze functie zal per database verschillen.

DATEADD is een veel gebruikte functie in o.a. Access en SQL Server.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
SQL:
1
DATE_ADD(CURDATE(),INTERVAL 1 MONTH)


Werkt dit niet?

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Cloud
  • Registratie: November 2001
  • Laatst online: 09-03 19:32

Cloud

FP ProMod

Ex-moderatie mobster

Indien het om PHP / MySQL gaat:

Hier gebruik ik het volgende trukje voor:
PHP:
1
    $wekenverschil = strtotime("1 month", time());

De uitkomst is dan een een timestamp gerekend vanaf de tijd van de 2e parameter. Dus als je i.p.v. time() je huidige SQL datum (in UNIX_TIMESTAMP vorm) meegeeft, telt hij er keurig 1 maand bij op.

Succes ermee! :)

[ Voor 10% gewijzigd door Cloud op 10-03-2006 14:09 ]

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
Gonadan schreef op vrijdag 10 maart 2006 @ 13:59:
SQL:
1
DATE_ADD(CURDATE(),INTERVAL 1 MONTH)


Werkt dit niet?
Yup dit werkt bedankt!!!

Is dit ook met een veelvoud van maanden te doen?

[ Voor 12% gewijzigd door clooner op 10-03-2006 14:03 ]

Inside The Matrix, they are everyone, and they are no one.


  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:22

mkleinman

8kWp, WPB, ELGA 6

Wanneer je een oracle DB gebruikt ADDMONTH :)

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
clooner schreef op vrijdag 10 maart 2006 @ 14:02:
[...]


Yup dit werkt bedankt!!!

Is dit ook met een veelvoud van maanden te doen?
Yup

Kijk hier maar eens, je kan bijna alles doen met die dates :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
Kijk hier maar eens, je kan bijna alles doen met die dates :)
Wat ik nu heb is dit.

SELECT * FROM `taaa`
WHERE NOW()=DATE_ADD(begin_datum,INTERVAL 1 MONTH)

Maar wat ik graag wil is als de huidige datum gelijk is aan begin_datum met dan een vergroting van maanden iedere keer?

Ik heb die pagina doorgelezen maar daaar kon ik zo niks van vinden.

Is dit wel mogelijk?

Inside The Matrix, they are everyone, and they are no one.


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
Dat is wel mogelijk, maar je moet dan echt de datum (dag-maan-jaar) gebruiken. En niet zo'n Date object. Want die rekend in milliseconden, dus dan klopt het nooit precies.

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
clooner schreef op vrijdag 10 maart 2006 @ 15:34:
[...]


Wat ik nu heb is dit.

SELECT * FROM `taaa`
WHERE NOW()=DATE_ADD(begin_datum,INTERVAL 1 MONTH)

Maar wat ik graag wil is als de huidige datum gelijk is aan begin_datum met dan een vergroting van maanden iedere keer?

Ik heb die pagina doorgelezen maar daaar kon ik zo niks van vinden.

Is dit wel mogelijk?
Wat je dus eigenlijk wilt dat de dag gelijk is aan de begin datum?
dan is het ( is MS-SQL ieder geval )
SQL:
1
2
select * from 'taaa'
where DAY( begin_datum ) = DAY( NOW() )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
rwb schreef op vrijdag 10 maart 2006 @ 15:38:
[...]

Wat je dus eigenlijk wilt dat de dag gelijk is aan de begin datum?
dan is het ( is MS-SQL ieder geval )
SQL:
1
2
select * from 'taaa'
where DAY( begin_datum ) = DAY( NOW() )
Nee
SQL:
1
2
3
4
select * from 'taaa'
where DAY(begin_datum) = DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH))
and MONTH(begin_datum) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH))
and YEAR(begin_datum) = YEAR(DATE_ADD(NOW(), INTERVAL 1 MONTH))
zoiets volgens mij

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
Ik denk dat ik het niet helemaal duidelijk heb uitgelegd

hier de code die wel werkt
SQL:
1
2
SELECT * FROM ingeplande_facturen WHERE
CURRENT_DATE( ) = DATE_ADD(DATE_FORMAT( begin_datum, '%Y-%m-%d' ) , INTERVAL 1 MONTH) || CURRENT_DATE( ) = DATE_ADD(DATE_FORMAT( begin_datum, '%Y-%m-%d' ) ,INTERVAL 2 MONTH) 


maar nu als ik dus wil controleren op 1 of 2 of meerdere maanden dan moet ik iedere keer weer een groot stuk code herhalen is dit nou mogelijk door bijvoorbeeld te zeggen (INTERVAL eineindig MONTHS)

hopelijk ben ik nu iets duidelijker

[ Voor 3% gewijzigd door clooner op 10-03-2006 15:49 ]

Inside The Matrix, they are everyone, and they are no one.


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
Dan kan dat stukje van rwb wel.
Als je de dag controleert, en kijkt of de datum in de toekomst ligt, dan weet je of er precies een aantal maanden tussenzit.
Daar zou je dan eventueel ook een bovengrens aan kunnen stellen.

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
Ok inderdaad dit werkt! maar gaat dit ook goed met maanden met 30,31 of 28 dagen? en met schikkeljaren?

Inside The Matrix, they are everyone, and they are no one.


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
Ik zou eigenlijk niet eens weten wat hij doet als je bijvoorbeeld bij 31 maart een maand optelt.
Ik gok dat hij er dan 30 april van maakt, maar dat weet ik niet zeker.
Dat zou je even moeten proberen.

Als je weet wat daar uit komt kan je een uitspraak doen over de dagen boven de 28 :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • clooner
  • Registratie: Augustus 2000
  • Laatst online: 18-09-2024
maar als ik die code van RWB gebruik dan telt hij er geen maand bij op dus dat is niet te gebruiken.

Inside The Matrix, they are everyone, and they are no one.


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 02:41

Gonadan

Admin Beeld & Geluid, Harde Waren
Nee, maar dat kan je er zelf makkelijk bijtikken

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je hoeft er toch ook geen maand bij op te tellen.

1 Februari is precies een maand later als 1 Januari en 1 Maart is weer een maand verder. Dus als je het dagnummer controlleert dan heb je precies een x aantal maanden verschil als die overeen komen.

Hoe het zit met datum's als 31 maart zoals gonandan aanhaalt dat weet ik ook niet precies. Het ligt er natuurlijk ook aan wat je precies wilt, en daar zal je dus speciale gevallen voor kunnen maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1