[mysql] unixtimestamp - 4 weken dmv query?

Pagina: 1
Acties:

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
lekker vage topic he :)

wat is mijn probleem cq vraag, ik wil weten of het volgende kan:

ik sla een bepaalde datum als timestamp op (bigint) in mijn db


is het mogelijk om dmv een select alles eruit te filteren wat precies 4 weken oud is?? want als je een date-field hebt, kan dit wel makkelijk.

want hoe krijg ik dit nu eruit??? want als het nu groter of kleiner dan 4 weken was, dan deed ik :

$vier_weken = time() - (4 * 7 * 24 * 60 * 60);

en dan bv $datum > $vier_weken in mijn selectstatement

maar deze query wordt dagelijks gerund dmv een cronjob, en nu moet ik $datum = $vier_weken hebben, maar dit gaat dus niet lukken..... omdat 4 weken hier op de seconde is en de $datum ook...


moet ik dan soms een between statement gebruiken dus gisteren en vandaag ofzo?

hoop dat het beetje duidelijk is

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

tijd > date_sub(now(), 4 week);
?

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
Op woensdag 15 mei 2002 12:12 schreef ACM het volgende:
tijd > date_sub(now(), 4 week);
?
sorry zou je dit wat beter kunnen uitleggen, want snap hier geen bal van

zie ook een > teken staan, maar moet dus = hebben

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Hmmm het is nog wel te doen denk ik, met een beetje rekenwerk. De huidige tijd weet je, noem deze t.
Als je nu iets van precies 4 weken oud moet hebben moet je zorgen dat t - (4 * 7 * 24 * 60 * 60) precies tussen het begin en het einde van de dag die vier weken geleden was. Dit begin en einde kan je ook door middel van de waarde van t uitrekenen, lijkt met dus dat je zeker de BETWEEN moet gebruiken.

Maar kent MYSQL geen datumconversiefuncties dan?

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Maak er gewoon een datefield van. Die zijn daar voor bedoeld. Als je echt een timestamp uit de DB wil hebben kun je dit met de unix_timestamp achtige functies doen (Die moet je eigenlijk alleen tussen de SELECT en FROM of bij een insert gebruiken zodat het aantal keren uitvoeren tot een minimum wordt beperkt)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 26-08 00:07
Op woensdag 15 mei 2002 12:20 schreef HenkS het volgende:

[..]

sorry zou je dit wat beter kunnen uitleggen, want snap hier geen bal van

zie ook een > teken staan, maar moet dus = hebben
dat moet in je SQL query.

kijk hier eens: http://www.mysql.com/doc/D/a/Date_and_time_functions.html

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
Op woensdag 15 mei 2002 12:24 schreef Janoz het volgende:
Maak er gewoon een datefield van. Die zijn daar voor bedoeld. Als je echt een timestamp uit de DB wil hebben kun je dit met de unix_timestamp achtige functies doen (Die moet je eigenlijk alleen tussen de SELECT en FROM of bij een insert gebruiken zodat het aantal keren uitvoeren tot een minimum wordt beperkt)
kan niet is al grote db, en zit al veel in, en verander ik nu niet meer

dus ga ik het maar met BETWEEN doen...

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
Op woensdag 15 mei 2002 13:03 schreef twiekert het volgende:

[..]

dat moet in je SQL query.

kijk hier eens: http://www.mysql.com/doc/D/a/Date_and_time_functions.html
goh je meent het.... zeg dan niks :?

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
nog 1 ding ter bevestiging...


klopt het dat dit 1 dag is:

(4 * 7 * 24 * 60 * 60)
.
.
alles hier tussen is 1 dag???? klopt dit?
.
.
(4 * 6 * 24 * 60 * 60)

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op woensdag 15 mei 2002 13:16 schreef HenkS het volgende:

nog 1 ding ter bevestiging...





klopt het dat dit 1 dag is:



(4 * 7 * 24 * 60 * 60)

.

.

alles hier tussen is 1 dag???? klopt dit?

.

.

(4 * 6 * 24 * 60 * 60)
Er zit wel 24 uur tussen maar die kan best wel verdeeld zijn over 2 dagen. :)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
dat maakt niks uit... 24 uur = precies 1 dag en daar gaat het me om

Verwijderd

24 uur is niet precies 1 dag hoor... :) als het goed is duurt een dag 23 uur en 56 minuten, maar dat zal bij die timestamp wel niks uitmaken...

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op woensdag 15 mei 2002 13:39 schreef HenkS het volgende:

dat maakt niks uit... 24 uur = precies 1 dag en daar gaat het me om
Sorry hoor, maar het gaat jou niet om 4 weken geleden op de seconde, maar op de dag zeg je in je eerste post.

Het lijkt me dan vrij logisch dat dit op dit moment dan 17 april zou zijn, en niet op 16 april of 18 april. Door puur die 24 uur te nemen, neem je een tijdsbestek van het huidige tijdstip 4 weken geleden, plus of min een dag.

Ik zie nu trouwens ook dat die expressie van jou niet eens klopt, daar zou ik als eerste al een ((4 * 7) -1) van maken ipv een (4 * 6). Maar goed, er vanuitgaande dat je dat doet:

Stel dat jou cronjob vandaag om 14:00 draait. Dan zou dus met de BETWEEN die jij hebt, iets met timestamp 17 april 13:00 niet als 4 weken oud beschouwd worden maar iets met timestamp 18 april 13:00 [i]wel[/b]. Terwijl het 4 weken geleden toch echt 17 april was.

Naja ik hoop dat ik mijn punt een beetje duidelijk heb kunnen maken, er komt dus wel even wat meer bij kijken.

Succes desalniettemin.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Op woensdag 15 mei 2002 13:42 schreef zellufs het volgende:
als het goed is duurt een dag 23 uur en 56 minuten
Dat lijkt me sterk. Dat zou betekenen dat je elke maand twee uur tijdsverschil krijgt en het na een halfjaar om middernacht 12 uur 's middags is.

Verwijderd

Heb je gelijk in... zal het ff uitrekenen...
Een dag duurt 23 uur, 59 minuten en 0,82 seconden... ongeveer hè :)

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

Topicstarter
Op woensdag 15 mei 2002 14:00 schreef Tsjipmanz het volgende:

[..]

Sorry hoor, maar het gaat jou niet om 4 weken geleden op de seconde, maar op de dag zeg je in je eerste post.

Het lijkt me dan vrij logisch dat dit op dit moment dan 17 april zou zijn, en niet op 16 april of 18 april. Door puur die 24 uur te nemen, neem je een tijdsbestek van het huidige tijdstip 4 weken geleden, plus of min een dag.

Ik zie nu trouwens ook dat die expressie van jou niet eens klopt, daar zou ik als eerste al een ((4 * 7) -1) van maken ipv een (4 * 6). Maar goed, er vanuitgaande dat je dat doet:

Stel dat jou cronjob vandaag om 14:00 draait. Dan zou dus met de BETWEEN die jij hebt, iets met timestamp 17 april 13:00 niet als 4 weken oud beschouwd worden maar iets met timestamp 18 april 13:00 [i]wel[/b]. Terwijl het 4 weken geleden toch echt 17 april was.

Naja ik hoop dat ik mijn punt een beetje duidelijk heb kunnen maken, er komt dus wel even wat meer bij kijken.

Succes desalniettemin.
ten 1e bedankt voor je verbetering, moet id (4*7)-1 zijn

maarre op dat 2 punt zou je wel gelijk hebben , MAAR mijn script komt in feite niet op een dag..

wat is namelijk het geval: als auto's 4 weken in db staan, krijgen die mensen een mail of ze het willen laten verlengen... en of dat nu 3 weken 6 dagen is of 4 weken en 1 dag boeit niet...

waar het wel om gaat is dat tussen die 2 between dingen precies 24 uur zit... want dit script loopt iedere nacht in een cronjob... en als het iedere nacht loopt... komt op een gegeven moment toch wel alles voorbij... (ehmm nou ja, ik snap mezelf.... en ik snap wat jij bedoeld. maar dat is dus niet nodig... toch thanks)

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Dan kan het inderdaad wel zo ja! :)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -

Pagina: 1