The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
Pseudo
1
| ...Where BirthDay >= Today and BirthDay < DateAdd(m,3,Today) |
voor de komende 3 maanden of
Pseudo
1
2
| Select Top 10... ...Where BirthDay >= Today |
Voor eerstvolgende 10 verjaardagen...
edit:
En die eerste kan nog mooier:
Pseudo
1
| ...Where BirthDay Between (Today and DateAdd(m,3,Today)) |
Overigens is het denk ik makkelijker de geboortedatum op te slaan, en zelf "uit te rekenen" wanneer de volgende is (en hoe oud die persoon wordt dan). Nu moet je zelf steeds je verjaardagen in je timeline tabel gooien. Niet erg praktisch toch?
[ Voor 81% gewijzigd door RobIII op 15-12-2003 21:28 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
In de database staan de geboortedatums en in wil de eerstkomende verjaardagen. (zie ook het linkje)
Dat werkt op zich wel alleen zie je niet de verjaardagen voorbij 31 dec.
[ Voor 20% gewijzigd door Sosabowski op 15-12-2003 21:32 ]
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
1
2
3
4
5
6
7
8
| SELECT
naam, verjaardag
FROM
verjaardagen
WHERE
INTERVAL (CURRENT_DATE - verjaardag) YEAR
<
INTERVAL (CURRENT_DATE - (verjaardag + INTERVAL 45 DAYS)) YEAR |
Oftewel:
selecteer iedereen die over een 45 dagen een jaar ouder is (dus binnen die 45 dagen jarig is).
Zoiets kan je zelf ook gebruiken door te kijken naar hoeveel dagen 'vanaf vandaag' iemand jarig is en daardoor op te sorteren, ala:
1
2
3
4
5
6
7
8
9
10
11
| SELECT
naam,
verjaardag,
(verjaardag + (INTERVAL (CURRENT_DATE - verjaardag) YEAR)) - CURRENT_DATE
as days_from_now
FROM
verjaardagen
WHERE
(verjaardag + (INTERVAL (CURRENT_DATE - verjaardag) YEAR)) > CURRENT_DATE
ORDER BY
days_from_now |
Ongetest
De where meegenomen, ik ben alleen niet zeker of ie wel nodig is
[ Voor 23% gewijzigd door ACM op 15-12-2003 21:37 . Reden: - vervangen door +, jaren optellen, niet aftrekken ]
edit:
Voor je eerst query krijg ik de volgende foutmelding:
1
2
3
| You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '< INTERVAL (CURRENT_DATE - (datum + INTERVAL 45 DAYS)) YEAR' at |
[ Voor 44% gewijzigd door Sosabowski op 15-12-2003 22:03 ]
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
in mysql zul je waarsch met date_sub / date_add moeten werken ipv de +'s en -'s van intervals
dus date_add(datum, INTERVAL 45 DAYS) in het geval van bovenstaande query.
Ik krijg het hier ook helemaal niet aan de praat. Mochten mensen nog ideeen hebben, ik hoor het graag. ACM bedankt!
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
WAT een wazig product is het ook
1
2
3
4
5
6
7
8
| SELECT
naam,
datum,
date_add(datum, interval FLOOR((current_date - datum)/10000) year) - current_date
as weird_timestamp
FROM
verjaardagen
ORDER BY weird_timestamp |
Die /10000 was bij mij nodig omdat mysql een of ander suf getal van 6 cijfers teruggaf bij het aftrekken van de verjaardagen van de huidige datum, wat het getal precies moet voorstellen zou ik niet weten iig, de voorste twee kwamen overeen met de leeftijd van de betreffende testpersonen
En het resultaat van de aftrekking van de "laatst gebeurde verjaardag" - "de huidige datum" geeft helemaal een bizar resultaat
Overigens ook nog een postgresql voorbeeld:
1
2
3
4
5
6
7
| SELECT
naam,
verjaardag,
(verjaardag + date_trunc('year', age(verjaardag))) - current_date
AS days_from_now
FROM verjaardagen
ORDER BY days_from_now |
De queries geven dus de sortering op basis van "hoe lang de verjaardag geleden was".
[ Voor 12% gewijzigd door ACM op 15-12-2003 23:21 ]
Het ziet er in iedergeval uit als iets waar ik zelf nooit op was gekomen.
Morgen testen!!
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell
1
2
3
4
5
6
7
8
| SELECT
naam,
datum,
date_add(datum, interval EXTRACT(YEAR FROM FROM_DAYS(TO_DAYS(current_date) - TO_DAYS(datum))) year)
- current_date as weird_timestamp
FROM
verjaardagen
ORDER BY weird_timestamp |
Iets aangepast, nal mijn bugreport bij mysql
Ik had bijna de hoop opgegeven dat het niet zonder php loops kon maar dankzij ACM (
P.S. idd raar programma dat MySQL
The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell