reminder week na afloop inschrijving

Status
Niet open voor verdere reacties.

BassmaniaQ

Gebruiker
Lid geworden
25 nov 2005
Berichten
15
ik ben met een project bezig, waarbij ik de users een email moet sturen als de account bijna is afgelopen. ik heb hiervoor een sql statement geschreven. alleen zit ik met het probleem als de maand bijna is afgelopen, dat het niet meer werkt, omdat hij dan bijv 24-11 24 +7 =31 en november heeft geen 31 dagen. hoe los ik dit op??

code:

WHERE (DATEPART(year, BetaalDatum) = DATEPART(year, GETDATE()) - 1) AND (DATEPART(day, BetaalDatum) = DATEPART(day, GETDATE()) + 7)

wat moet ik doen op dit probleem op te lossen?? Of is er een makkelijkere code voor dit probleem???

Bij voorbaat dank!!!!!
 
Laatst bewerkt:
getdate() is php, omdat de vraag onder sql staat zal ik hier de sql-code plaatsen.

Ik ga er van uit dat de kolom BetaalDatum de datum is dat de account is afgelopen.

Code:
where BetaalDatum > date_add(curdate(), INTERVAL - 7 DAY);

Mocht je een php-oplossing willen laat het dan even weten!
 
nee, de betaaldatum is de datum waarop betaalt is. dat wil zeggen dat een jaar erna de inschrijving is afgelopen. een week voor dat aflopen moet de mail worden gestuurd.
de mysql code gebruik ik trouwens in asp ;)
thanx!
 
Ik weet niets van asp, maar is mysql zou ik het zo doen:
Code:
where date_add(BetaalDatum, INTERVAL + 1 YEAR) = date_add(curdate(), INTERVAL - 7 DAY)
 
Een voorbeeldje:

met de sql:
Code:
select curdate();
krijg je de datum van vandaag:
+------------+
| 2005-11-26 |
+------------+

gebruik je:
Code:
select curdate() + 7;
dan krijg je 33 november:
+---------------+
| 20051133 |
+---------------+

maar met dateadd:
Code:
select date_add(curdate(), INTERVAL + 7 DAY);
krijg je dit:
+---------------------------------------+
| 2005-12-03 |
+---------------------------------------+

Succes!
 
bedankt :D
deze code kun je dus ook in asp gebruiken, ja lijkt me wel trouwens ;)
 
waarom werkt dit niet?

SELECT BetaalDatum
FROM dbo.Transactie
WHERE (BetaalDatum = DATEADD(Year, - 1, { fn CURDATE() }))

in de database staat de data die daarbij hoort. Het is wel datetime in de tabel, kan het daaraan liggen??
 
dat werkt wel, maar nu een andere vraag:

SELECT BetaalDatum
FROM dbo.Transactie
WHERE (CAST(BetaalDatum AS varchar(12)) = DATEADD(Year, - 1, { fn CURDATE() })) AND (CAST(BetaalDatum AS varchar(12)) = DATEADD(Day, 7, { fn CURDATE() }))

zit nu weer met het probleem met dat optellen van dagen volgens mij, kan dit opgelost worden???
 
Volgens mij vergelijk je nu een datum met een varchar veld. Dat zal nooit goed gaan.


Grtz,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan