Vinnaren i pepparkakshustävlingen!
2006-04-21, 17:54
  #1
Medlem
Seagates avatar
Hej!

Vad har jag gjort fel i följande fråga?

Kod:
SELECT * FROM tabell WHERE TIMESTAMPDIFF(HOUR, Datum, Now()) < 3

Det jag vill är alltså att välja alla poster som är högst 3 timmar gamla.

Eller är det kanske på något annat sätt man skall göra?

// Farbror Seagate
Citera
2006-04-21, 19:03
  #2
Medlem
Kod:
SELECT * 
FROM tabell 
WHERE Datum + INTERVAL 3 HOUR > NOW()
Citera
2006-04-21, 20:03
  #3
Medlem
Seagates avatar
Citat:
Ursprungligen postat av manne1973
Kod:
SELECT * 
FROM tabell 
WHERE Datum + INTERVAL 3 HOUR > NOW()

Fungerade utmärkt! Tackar
Citera
2006-04-22, 09:57
  #4
Medlem
Hoppas det är ok att jag återanvänder tråden?

Jag letar efter en php-funktion som visar skillnaden mellan två timestamp i månader, dagar, timmar och minuter.

Orkar inte göra ett själv, tror de finns nån stans men jag hittar inte..

Edit: Blev dessutom i fel forum tror jag...
Citera
2006-04-22, 11:23
  #5
Medlem
blueCommands avatar
Citat:
Ursprungligen postat av unknown4
Hoppas det är ok att jag återanvänder tråden?

Jag letar efter en php-funktion som visar skillnaden mellan två timestamp i månader, dagar, timmar och minuter.

Orkar inte göra ett själv, tror de finns nån stans men jag hittar inte..

Edit: Blev dessutom i fel forum tror jag...

Borde det inte vara något sådant här typ (förutsatt att du använder PHP):

Kod:
<?php
    $datediff = $dateHighest - $dateLowest;
    $years  = $datediff / (365*24*60*60); $datediff -= $years *(365*24*60*60);

    $months  = $datediff / (30*24*60*60); $datediff -= $months *(30*24*60*60)

...
?>

Jag kan också vara ute och seglar, tidigt på morgon änn
Du borde kunna använda modulus också, men det orkar jag inte fundera på så här dags
Citera
2006-04-22, 16:56
  #6
Medlem
Seagates avatar
Citat:
Ursprungligen postat av unknown4
Hoppas det är ok att jag återanvänder tråden?

Ja, det är helt okej. Jag har ju både fått en lösning på mitt problem och ditt inlägg var ju rätt så topic.

// Farbror Seagate
Citera
2006-04-22, 21:29
  #7
Medlem
Citat:
Ursprungligen postat av unknown4
Jag letar efter en php-funktion som visar skillnaden mellan två timestamp i månader, dagar, timmar och minuter.
Hur definierar du månadsdelen av tiden? Detta är litet knepigt...

Mellan den 20 mars och den 30 april är det alltid 41 dagar. Samtidigt vill man ha det till 1 månad och 10 dagar.

Mellan den 18 februari och den 30 mars är det bara 40 dagar (när det inte är skottår). Samtidigt vill man ha detta till 1 månad och 12 dagar, alltså till något som låter som en längre tidsperiod.

Så om en mamma säger att hennes spädbarn är 1 månad och 10 dagar, medan en annan mamma säger sig ha ett spädbarn som är 1 månad och 12 dagar, är det inte säkert att det senare barnet är det äldre.
Citera
2006-04-24, 10:48
  #8
Medlem
m0gs avatar
nåt i stil med
Kod:
date("y-m-d H:i:s "$timestamp1-$timestamp2
kanske?
Citera
2006-04-24, 11:25
  #9
Medlem
blueCommands avatar
Citat:
Ursprungligen postat av m0g
nåt i stil med
Kod:
date("y-m-d H:i:s "$timestamp1-$timestamp2
kanske?

-1970 på år då, eller? :unsure
Citera
2006-04-24, 13:23
  #10
Medlem
Citat:
Ursprungligen postat av manne1973
Hur definierar du månadsdelen av tiden? Detta är litet knepigt...

Mellan den 20 mars och den 30 april är det alltid 41 dagar. Samtidigt vill man ha det till 1 månad och 10 dagar.

Mellan den 18 februari och den 30 mars är det bara 40 dagar (när det inte är skottår). Samtidigt vill man ha detta till 1 månad och 12 dagar, alltså till något som låter som en längre tidsperiod.

Så om en mamma säger att hennes spädbarn är 1 månad och 10 dagar, medan en annan mamma säger sig ha ett spädbarn som är 1 månad och 12 dagar, är det inte säkert att det senare barnet är det äldre.

Precis.. vet inte riktigt hur jag ska lösa det.

Hittade det här:

Kod:
function datediff($start_date,$end_date="now",$unit="D")
        {
            
$unit strtoupper($unit);
            
$start=strtotime($start_date);
            if (
$start === -1) {
                print(
"invalid start date");
            }
            
            
$end=strtotime($end_date);            
            if (
$end === -1) {
                print(
"invalid end date");
            }
            
            if (
$start $end) {
                
$temp $start;
                
$start $end;
                
$end $temp;
            }
            
            
$diff $end-$start;
            
            
$day1 date("j"$start);
            
$mon1 date("n"$start);
            
$year1 date("Y"$start);
            
$day2 date("j"$end);
            
$mon2 date("n"$end);
            
$year2 date("Y"$end);
            
            switch(
$unit) {
                case 
"D":
                    print(
intval($diff/(24*60*60)));
                    break;
                case 
"M":
                    if(
$day1>$day2) {
                        
$mdiff = (($year2-$year1)*12)+($mon2-$mon1-1);
                    } else {
                        
$mdiff = (($year2-$year1)*12)+($mon2-$mon1);
                    }
                    print(
$mdiff);
                    break;
                case 
"Y":
                    if((
$mon1>$mon2) || (($mon1==$mon2) && ($day1>$day2))){
                        
$ydiff $year2-$year1-1;
                    } else {
                        
$ydiff $year2-$year1;
                    }
                    print(
$ydiff);
                    break;
                case 
"YM":
                    if(
$day1>$day2) {
                        if(
$mon1>=$mon2) {
                            
$ymdiff 12+($mon2-$mon1-1);
                        } else {
                            
$ymdiff $mon2-$mon1-1;
                        }
                    } else {
                        if(
$mon1>$mon2) {
                            
$ymdiff 12+($mon2-$mon1);
                        } else {
                            
$ymdiff $mon2-$mon1;
                        }
                    }
                    print(
$ymdiff);
                    break;
                case 
"YD":
                    if((
$mon1>$mon2) || (($mon1==$mon2) &&($day1>$day2))) {
                        
$yddiff intval(($end mktime(000$mon1$day1$year2-1))/(24*60*60));                        
                    } else {
                        
$yddiff intval(($end mktime(000$mon1$day1$year2))/(24*60*60));
                    }
                    print(
$yddiff);
                    break;
                case 
"MD":
                    if(
$day1>$day2) {
                        
$mddiff intval(($end mktime(000$mon2-1$day1$year2))/(24*60*60));                        
                    } else {
                        
$mddiff intval(($end mktime(000$mon2$day1$year2))/(24*60*60));
                    }
                    print(
$mddiff);
                    break;
                default:
                
            }

        } 
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback