Avatar billede krummel Juniormester
27. juli 2006 - 09:46 Der er 7 kommentarer og
1 løsning

Datediff problem

Hvad gør jeg galt her?

PHP, mysql. Jeg et felt med DATETIME i db og kollonnen hedder datostart. Jeg ønsker antal dage, timer og minutter til den aktuelle tid now(). Den skriver ingen data ud med nedenstående.



select *, DATEDIFF(datostart, now()) as tdif from Tabel

echo $myrow[tdif];
Avatar billede krummel Juniormester
27. juli 2006 - 09:47 #1
Det er mysql selvom jeg kom til at skrive dette spørgsmål i mssql - sorry. Håber på svar alligevel.
Avatar billede terry Ekspert
27. juli 2006 - 09:50 #2
DATEDIFF ("dd", datostart, now())
Avatar billede terry Ekspert
27. juli 2006 - 09:50 #3
.
Avatar billede terry Ekspert
27. juli 2006 - 09:52 #4
dd = day
mm = month
hh = hour
.
.
Avatar billede terry Ekspert
27. juli 2006 - 09:53 #5
or maybe
DATEDIFF ( day, datostart, now())

No idea what MySQL uses
Avatar billede krummel Juniormester
27. juli 2006 - 12:14 #6
Jeg har lige fundet ud af, at min host har en ældre version af mysql, som ikke understøtter Datediff.

Kan det lade sig gøre at finde forskellen med day, month, hour med andre midler?
Avatar billede terry Ekspert
27. juli 2006 - 13:16 #7
You woul dhave to make some code which calculated the diffrence for you, unless there is some other smart way to do it in MySQL.
Avatar billede Slettet bruger
28. juli 2006 - 02:35 #8
SELECT *, CAST(UNIX_TIMESTAMP(datostart) - UNIX_TIMESTAMP(NOW()) AS SIGNED INTEGER) AS tdif

returnerer antallet af sekunder mellem nu og datostart. Bemærk, at hvis datostart er passeret, vil tallet være negativt.

Så kan du i PHP fange de andre værdier med denne stump:

$t = $myrow['tdif']; // husk '' om navnet
$fortid = ($t<0); // Hvis t er negativ, er $fortid nu true, ellers er den false
if($fortid) $t = -1 * $t; // Nu er $t positiv

$sekunder = $t % 60;
$t = ($t - $sekunder) / 60; // fjern sekunder fra $t og omregn til minutter

$minutter = $t % 60;
$t = ($t - $minutter) / 60; // fjern minutter fra $t og omregn til timer

$timer = $t % 24;
$t = ($t - $timer) / 24; // fjern timer, og omregn til dage

$tekst = "$t dage, $timer timer og $minutter minutter";

if($fortid)
{
  echo "Datoen er for $tekst siden.";
}
else
{
  echo "Datoen er om $tekst.";
}
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
Computerworld tilbyder specialiserede kurser i database-management

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