rekenen met datetime

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ren

Ren

16/11/2006 14:39:00
Quote Anchor link
In mijn database heb ik met datetime dat tijd toegevoegd wanneer een aanmelding is geplaatst. Nu wil ik uitrekenen hoelang geleden dat is.

Nu heb ik het volgende alleen werkt dit niet:

SELECT voornaam, CURRENT_DATE(), tijd, DATEDIFF(CURRENT_DATE(), tijd) AS verschil FROM klant;
 
PHP hulp

PHP hulp

05/11/2024 11:56:04
 
Majid Ahddin

Majid Ahddin

16/11/2006 14:45:00
Quote Anchor link
in seconden:
select voornaam, tijd, unix_timestamp(now())-unix_timestamp(tijd) as verschil from klant;
 
Frank -

Frank -

16/11/2006 14:49:00
Quote Anchor link
Tja, 'werkt niet' blijft toch een vage bedoening. Geen mens die weet wat er fout gaat, verkeerde uitkomsten of errors, en dat is toch wel zo handig.

Het is mij overigens niet duidelijk waarom je CURRENT_DATE() in de SELECT hebt staan en dan ook nog zonder ALIAS. Dat is lastig werken in php.

De functie DATEDIFF() ziet er goed uit, maar je moet wel bedenken dat je nu met datums bezig bent en niet met tijden (uren, minuten en seconden) wat je met TIMEDIFF() kunt berekenen. De vraag is dus wat je nu precies wilt berekenen en wat er fout gaat.

http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html

Edit: @Rudi: Die timestamps heb je niet nodig, TIMEDIFF() doet de truc ook, maar dan eenvoudiger. Althans, zo denk ik er over... ;)
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Ren

Ren

16/11/2006 15:09:00
Quote Anchor link
Wil graag het verschil weten tussen nu en de ingevoerde data/tijd. Als het kleiner is als 30 min dan moet er iets mee gaan gebeuren.

SELECT naam, tijd, TIMEDIFF( TIMEDIFF( NOW( ) , tijd ) ) AS minuten
FROM klanten


MySQL retourneerde:

#1064 - 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 '( TIMEDIFF( NOW( ) , tijd ) ) AS uren
FROM klanten
LIMIT 1' a
 
Frank -

Frank -

16/11/2006 15:23:00
Quote Anchor link
Vanwaar de functie TIMEDIFF() binnen de functie TIMEDIFF() ? Daar gaat iets helemaal fout.

En wanneer je alleen de uren wilt hebben, dan kun je
MINUTE(TIMEDIFF( NOW( ) , tijd )) AS minuten
gebruiken.
 
Ren

Ren

16/11/2006 15:26:00
Quote Anchor link
Er ging idd iets een beetje mis. Had de code nu al zoals jij hem hebt. Alleen nog zonder resultaat helaas.

SELECT naam, tijd, MINUTE(TIMEDIFF(NOW( ),tijd)) AS minuten
FROM klanten
 
Frank -

Frank -

16/11/2006 15:41:00
Quote Anchor link
Met de query is niets mis, tenzij jouw kolomnamen niet goed zijn, daar kan het dus niet aan liggen. Controleer jij wel of de query is gelukt en hoeveel records er zijn geselecteerd?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$query
= ""; // jouw SQL
$result = mysql_query($query);
if(!$result){
  echo 'Query mislukt vanwege: '.mysql_error();
}

else {
  $rows = mysql_num_rows($result);
  echo 'er zijn '.$rows.' geselecteerd.'
  while($row = mysql_fetch_assoc($result)){
    echo $row['minuten'];
  }
}

?>

Opmerking: De functie MINUTE() kan prima werk verrichten, maar lijkt mij hier niet op zijn plaats. TIMEDIFF() geeft een antwoord in het formaat hh:mm:ss en om daar nu alleen de minuten van te nemen, het lijkt mij wat vreemd.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.