PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Aja kalkuleerimine
Postitaja: joker 2007-04-16 12:45:49
Baasis järgmised väljad: date, time, locked.

Välja sisud näevad välja alljärgnevad:
$date = '20061208';//mis kuupäeval väli locked muudeti 1ks
$time = '12:00';//mis kellaajal väli locked muudeti 1ks
$locked = 1; //default 0

Nüüd oleks vaja kalkuleerida, et kui $locked on 10 minutit väärtusega 1 olnud, siis pannakse ta 0ks. Crontabiga saab miskit scripti iga teatud aja tagant käivitada. Kuidas aga välja arvutada, et 10 minutit on mööda läinud?!

Viimati muudetud: 16-04-2007 12:46:24
Muutja: joker
Põhjus:

RE: Aja kalkuleerimine
Postitaja: Keegi_Teine 2007-04-16 12:48:19
muuda oma tabelit nii, et date ja time oleks ühes väljas (DATETIME) ja su probleem haihtub
RE: Aja kalkuleerimine
Postitaja: joker 2007-04-16 13:24:04
Mis oleks siis lahenduseks kui aeg ja kuupäeva väärtused ühes väljas?!

Viimati muudetud: 16-04-2007 13:24:28
Muutja: joker
Põhjus: Täpsustus

RE: Aja kalkuleerimine
Postitaja: Keegi_Teine 2007-04-16 13:29:58
Seljuhul peaksid sa saama kasutada mysql'i päringuid, et oma operatsioon ära teha.
manualist soovitaks lugeda datetime functions'i paragraafi ja INTERVAL (oli vist) keyword'i
RE: Aja kalkuleerimine
Postitaja: joker 2007-04-16 15:55:33
PHP foorumist on ikka päris palju abi!

select datetime, TIME_TO_SEC(now())-TIME_TO_SEC(datetime) from `times`

Viimati muudetud: 16-04-2007 16:06:27
Muutja: joker
Põhjus:

RE: Aja kalkuleerimine
Postitaja: Keegi_Teine 2007-04-16 16:06:30
addtime() või näiteks timediff() olenevalt kuidas mõte jookseb
RE: Aja kalkuleerimine
Postitaja: joker 2007-04-23 12:40:40
$datetime = '2007-04-22 12:45:20';

Kellaaeg ja aeg on praegu '2007-04-23 12:45:40'.

Kui teha päringu:

select TIME_TO_SEC(now())-TIME_TO_SEC(datetime) AS timecalc from info_log

... siis annab päring timecalc väärtuseks -20 sekundit. Tundub, et antud päringu süntaks arvestab kellaaegu, kuid ei võta arvesse kuupäevi.

Mida tuleks muuta, et päringus arvestatakse ka kuupäevi?!
RE: Aja kalkuleerimine
Postitaja: xdx 2007-04-23 13:21:15
EI ÜTLE
RE: Aja kalkuleerimine
Postitaja: joker 2007-04-23 15:51:16
Lõpuks sain ise hakkama:

$sql_text = "select *, PERIOD_DIFF(datetime,now()) AS timecalc from ...
RE: Aja kalkuleerimine
Postitaja: dolts 2007-05-02 17:51:49
Keegi_Teine vastas sulle ilusti 2 postiga ära täpselt mida teha, ikka vaja oma asja raiuda ja teisi kiruda....
RE: Aja kalkuleerimine
Postitaja: joker 2007-05-06 18:37:18
Lahendasin päringu teisiti, PERIOD_DIFF näitab ühe päeva piires ajavahet mõistlikult, kuid kui on vaja arvestada kahe kuupäeva vahet, siis näitab ta mingil põhjusel vahet miinusmärgiga, ning sekundeid arvestab ka mingi imeliku kiiksuga.

Lahendasin asja alljärgnevalt:
$sql_text = "select *, TIMEDIFF(now(),datetime) AS timecalc from TABLE";

$time=$row["timecalc"];
$time = split ( ":", $time);

//Aja arvestamine minutitesse
$timeInSeconds = $time[2] + $time[1]*60 + $time[0]*3600;

if ($timeInSeconds > 500){
Käitivatakse protsess
}

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0826480388641