[php] leeftijd, verjaardagen probleem door timestaps

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik gebruik sinds kort timestamps om geboortedata op te slaan in de database, want ik dacht dat het alleen maar voordelen had, maar nu heb ik een probleem.

als ik bijv. wil kijken wie er vandaag allemaal jarig zijn, dan heb ik een probleem, want hoe doe ik dat??

het kan wel heel omslachtig, zo bijv:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$dag = 16;
$maand = 6;
$timestamps = array();

for($jaar=1900;$jaar<2003;$jaar++){

$timestamps[] = mktime (0,0,0,$maand,$dag,$jaar);

}

$query = "SELECT * FROM table WHERE ";

foreach($timestamps as $timestamp){
$query.="gebdatum='$timestamp' OR ";
}

$query = substr ($query,-4);


maar misschien is er een makkelijkere oplossing?? want dit is wel erg omslachtig.

Acties:
  • 0 Henk 'm!

  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Hiermee kan je niet echt een datum doen van voor 1970 als ik het goed heb. de manier om te kijken of er iemand jarig is vandaag is de dag en de maand te pakken van vandaag en vervolgens dit te vergelijken met de dag en de maand die in de db staan

Don't mind Rick


Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
TIMESTAMP values may range from the beginning of 1970 to sometime in the year 2037, with a resolution of one second. Values are displayed as numbers.
voor geboortedata zou ik geen timestamp gebruiken maar date

en dan zoiets als SELECT * FROM gebruikers WHERE DAYOFYEAR(gebdatum) = DAYOFYEAR(NOW());

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Met de voetnoot dat wanneer je gebruik maakt van UNIX timestamps (aantal seconden sinds 1-1-1970) je wel wat zult hebben aan de functies FROM_UNIXTIME en UNIX_TIMESTAMP.

Overigens denk ik persoonlijk dat het handiger is om met MySQL timestamps of een ander (native) datum-type te kiezen, waardoor het werken met de date/time functions van MySQL ook een stukje transparanter en eenvoudiger wordt :)

Zie ook: http://www.mysql.com/doc/en/Date_and_time_functions.html

edit:
Ik zie trouwens dat het ook geen kwaad kan voor jou om even te kijken naar de BETWEEN operator, ludohelder ;)

[ Voor 13% gewijzigd door drm op 16-06-2003 17:54 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
rickmans schreef op 16 juni 2003 @ 17:37:
Hiermee kan je niet echt een datum doen van voor 1970 als ik het goed heb. de manier om te kijken of er iemand jarig is vandaag is de dag en de maand te pakken van vandaag en vervolgens dit te vergelijken met de dag en de maand die in de db staan
je kan wel een datum voor 1-1-1970 doen, dan krijg je gewoon een negatief getal.

en die tweede opmerking heb ik natuurlijk niets aan,

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
twiekert schreef op 16 June 2003 @ 17:46:
[...]


voor geboortedata zou ik geen timestamp gebruiken maar date

en dan zoiets als SELECT * FROM gebruikers WHERE DAYOFYEAR(gebdatum) = DAYOFYEAR(NOW());
ja, volgens mij heb je wel gelijk

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm schreef op 16 June 2003 @ 17:51:
Met de voetnoot dat wanneer je gebruik maakt van UNIX timestamps (aantal seconden sinds 1-1-1970) je wel wat zult hebben aan de functies FROM_UNIXTIME en UNIX_TIMESTAMP.

Overigens denk ik persoonlijk dat het handiger is om met MySQL timestamps of een ander (native) datum-type te kiezen, waardoor het werken met de date/time functions van MySQL ook een stukje transparanter en eenvoudiger wordt :)

Zie ook: http://www.mysql.com/doc/en/Date_and_time_functions.html

edit:
Ik zie trouwens dat het ook geen kwaad kan voor jou om even te kijken naar de BETWEEN operator, ludohelder ;)
ik denk dat ik maar overstap op mysql_timestamp aangezien niemand me hier echt een goede oplossing kan geven, tenzei ik mysql timestamps ga gebruiken.

bedankt voor je reactie

Acties:
  • 0 Henk 'm!

  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Verwijderd schreef op 16 June 2003 @ 23:16:
[...]


je kan wel een datum voor 1-1-1970 doen, dan krijg je gewoon een negatief getal.
Ik krijg dan alleen -1, voor de rest niets anders. Daarnaast krijg ik de volgende melding:
code:
1
2
Warning: mktime() [function.mktime]: Windows does not support negative values
 for this function in C:\Inetpub\websites\temp.php on line 8
en die tweede opmerking heb ik natuurlijk niets aan,
Ja nu ik nalees heb je gelijk, sorry (8>

Don't mind Rick


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
rickmans schreef op 16 juni 2003 @ 23:45:
[...]

Ik krijg dan alleen -1, voor de rest niets anders. Daarnaast krijg ik de volgende melding:
code:
1
2
Warning: mktime() [function.mktime]: Windows does not support negative values
 for this function in C:\Inetpub\websites\temp.php on line 8


[...]

Ja nu ik nalees heb je gelijk, sorry (8>
ik heb het nu opgelost dmv mysql timestamps te gebruiken, die zijn wat makkelijker leesbaar, en kan je leuke query's mee opbouwen,

bedankt voor de reacties.
Pagina: 1