Avatar billede capper83 Nybegynder
06. september 2005 - 12:40 Der er 19 kommentarer og
1 løsning

trække to datoer fra hinanden

hejsa

jeg har lige et lille problem jeg håber i kan hjælpe med.

jeg har i en database to datoer.
de er skrevet fx sådan 2005-09-06 08:11:30
nu ville jeg så høre om hvordan man kan trække to datoer fra hinanden altså fx 2005-09-06 08:11:30 - 2005-10-06 08:11:30 så man får hvor mange dage der er mellem der.
det skal bruges til brugere der er medlem på min side, de skal kunne se hvor lang tid de har igen, inde de bliver slettet.

håber i kan hjælpe på forhånd tak

Venlig hilsen
Jack
Avatar billede showsource Seniormester
06. september 2005 - 13:14 #1
hmm, du vil vel vise fra dags dato til sletning?
Der er noget DATEDIFF som henter dage

$dage = mysql_query("SELECT DATEDIFF(NOW(), dag) FROM dato WHERE id = 2") or die (mysql_error());
echo mysql_result($dage, 0);
Avatar billede capper83 Nybegynder
06. september 2005 - 13:17 #2
jeg har i min mysql en tabel der hedder dato i den er der en der hedder start og slut
Avatar billede showsource Seniormester
06. september 2005 - 13:21 #3
$dage = mysql_query("SELECT DATEDIFF(slut, start) FROM dato WHERE id = 2") or die (mysql_error());
Avatar billede capper83 Nybegynder
06. september 2005 - 13:25 #4
jeg har ikke noget med id
Avatar billede capper83 Nybegynder
06. september 2005 - 13:27 #5
jeg har brugernavn i stedet for id
Avatar billede showsource Seniormester
06. september 2005 - 13:28 #6
Så bruger du jo blot brugernavn i stedet! :O)
WHERE brugernavn = 'navn'
Avatar billede capper83 Nybegynder
06. september 2005 - 13:30 #7
den kommer med denne fejl:
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 '(slut, start) FROM dato WHERE username = capper' at line 1
Avatar billede showsource Seniormester
06. september 2005 - 13:33 #8
$dage = mysql_query("SELECT DATEDIFF(slut, start) FROM dato WHERE username = 'capper'") or die (mysql_error());
Avatar billede capper83 Nybegynder
06. september 2005 - 13:36 #9
den siger stadig der er fejl
Avatar billede showsource Seniormester
06. september 2005 - 13:38 #10
hmm DATEDIFF kan bruges fra ver. 4.1.1
Måske det er fejlen? Altså du ahr en ældre ver.
Avatar billede capper83 Nybegynder
06. september 2005 - 13:56 #11
ok hvad betyder DATEDIFF? og jeg tror måske jeg sidder og sover lidt!
jeg skal have regnet ud fra dags dato også frem til min stop dato :)
Avatar billede showsource Seniormester
06. september 2005 - 13:56 #12
Det kan også gøres så'n:

$dage = mysql_query("SELECT (UNIX_TIMESTAMP(slut)-UNIX_TIMESTAMP(start)) FROM dato WHERE username = 'capper'") or die (mysql_error());
$tid = mysql_result($dage, 0);
echo show_tid($tid);

function end_text($var, $text="e") {

    if($var == 1) {
    return "";
    }else{
    return $text;
    }
}



function show_tid($var, $space="<br />\r\n") {

$minut_ialt = round($var/60);


    if($minut_ialt > 59) {
    $tim = floor($minut_ialt/60);

        if($tim > 23) {
        $days = floor($minut_ialt/(60*24));
        $timer_minutes = $minut_ialt-($days*(60*24));
        $timer = floor($timer_minutes/60);
        $minutes = $minut_ialt-($timer*60)-($days*(60*24));
        $tid_tekst = $days ." dag". end_text($days) . $space . $timer ." time". end_text($timer, "r") . $space . $minutes ." minut". end_text($minutes, "ter");

        }else{

        $min = $minut_ialt-($tim*60);
        $tid_tekst = $tim ." time". end_text($tim, "r") . $space . $min ." minut". end_text($min, "ter");
        }

    }else{

    $tid_tekst = $minut_ialt ." minut". end_text($minut_ialt, "ter");

    }

return $tid_tekst;

}
Avatar billede showsource Seniormester
06. september 2005 - 13:57 #13
Ja, ok, det skal vise fra nuy til slut?
Og ikke fra start til slut? Right?
Avatar billede capper83 Nybegynder
06. september 2005 - 13:58 #14
jeg kører kun med 4.0.24-standard så det kan jo også være derfor :) er der andre måde man kan gøre det på?
Avatar billede showsource Seniormester
06. september 2005 - 13:59 #15
$dage = mysql_query("SELECT (UNIX_TIMESTAMP(slut)-UNIX_TIMESTAMP()) FROM dato WHERE username = 'capper'") or die (mysql_error());
Avatar billede capper83 Nybegynder
06. september 2005 - 14:01 #16
nice kode der :)
når jeg så skriver echo mysql_result($dage, 0); kommer der til at stå 2592000
Avatar billede showsource Seniormester
06. september 2005 - 14:03 #17
Det er sekunder som så udregnes til dag/timer/minutter
Men der skal jo nok lige laves tjek på om resultat af query ikke er mindre en 0.
Så er tiden jo udløbet :O)
Avatar billede capper83 Nybegynder
06. september 2005 - 14:04 #18
ok nice mange tak for hjælpen :) det er bare kanon..

smider du lige et svar?
Avatar billede showsource Seniormester
06. september 2005 - 14:07 #19
johh, men er nu ret sikker på der noget sql som også kan gøre det.
Kender det bare ikke.
M.h.t. til udløb:

function show_tid($var, $space="<br />\r\n") {

if($var < 0) {
return "Din tid er uløbet!";
}

//resten af funktionen.......
Avatar billede showsource Seniormester
06. september 2005 - 14:07 #20
Hov stavefejl er gratis!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester