Avatar billede milbak Nybegynder
23. marts 2004 - 17:07 Der er 11 kommentarer og
2 løsninger

Sortere efter nærmeste dato

Hej

Jeg har en database med en del poster, som indeholder et timestamp. Timestamp'et er en fremtidig dato, som brugeren har indtastet.

Det jeg skal bruge er de to poster i databasen, hvis dato ligger nærmest, den nuværende aktuelle dato. Datoer som er ældre en den aktuelle dato skal selvfølgelig ikke med.

Hvordan gør jeg?
Avatar billede jakobclausen Nybegynder
23. marts 2004 - 17:10 #1
Hvilket format har du gemt din data i, i databasen ?
Avatar billede milbak Nybegynder
23. marts 2004 - 17:23 #2
Jeg har brugt denne funktion:

$unix_timestamp = mktime(0,0,0,$month,$date,$year);

hvilket giver date formatet: 2003-11-21 00:00:00
Avatar billede jakobclausen Nybegynder
23. marts 2004 - 17:35 #3
Prøv med:
SELECT * FROM tbl_name WHERE timestamp > TO_DAYS(NOW()) ORDER BY timestamp LIMIT 0,2

*timestamp -> skal rettes til navnet på den kolonne som indholder din dato

Læs mere her:
http://www.mysql.com/doc/en/Date_and_time_functions.html
Avatar billede milbak Nybegynder
23. marts 2004 - 18:25 #4
dit eksempel lister de to poster med de højeste værdier.

Er der nogen som kan tyde hvordan de to mindste poster(i form af datoen efter nuværende) kan listes?

Jeg har før kigget på Mysql.com, men kan ikke gennemskue hvordan jeg skal gøre
Avatar billede jakobclausen Nybegynder
23. marts 2004 - 18:27 #5
Hvad gør dette så ?

SELECT * FROM tbl_name WHERE timestamp > TO_DAYS(NOW()) ORDER BY timestamp DESC LIMIT 0,2
Avatar billede milbak Nybegynder
23. marts 2004 - 19:05 #6
Nu er der bare ingenting der virker, så jeg kan ikke afprøve dit nye forslag.

Hvad kan der være galt her?

<?
$link = mysql_connect("localhost", "whatever_dk", "????????") or die("Could not connect");
mysql_select_db ("hejhej_dk");
$query = mysql_query("SELECT * FROM koncertplan WHERE DATO > TO_DAYS(NOW()) ORDER BY DATO LIMIT 0,2");
while ($data = mysql_fetch_array($query)){
extract($data);

$dato_koncertplan=$data[dato];
$by_koncertplan=$data[by];
$sted_koncertplan=$data[sted];
$yr=substr($dato_koncertplan,0,4);
$mo=substr($dato_koncertplan,5,2);
$day=substr($dato_koncertplan,8,2);
$Date_this = "$day/$mo";

$all = "$Date_this $sted_koncertplan - $by_koncertplan";
?>

<font face="verdana" size="1"><a href="mainnews.html">-
<?
echo $all;
?></a><?
}
?>
Avatar billede milbak Nybegynder
23. marts 2004 - 19:08 #7
da jeg afprøvede det første eksempel fremkom to poster, nu kommer der ingen
Avatar billede milbak Nybegynder
23. marts 2004 - 19:20 #8
dette lister de to datoer længst væk fra idag og det virker lige nu

SELECT * FROM koncertplan ORDER BY dato DESC LIMIT 0,2

men dette virker ikke:

SELECT * FROM koncertplan where dato > TO_DAYS(NOW()) ORDER BY dato DESC LIMIT 0,2

nogen der har en god forklaring? Det har virket tidligere i dag
Avatar billede detox Nybegynder
23. marts 2004 - 19:30 #9
Prøv med:

SELECT * FROM koncertplan where dato > NOW() ORDER BY dato LIMIT 0,2
Avatar billede detox Nybegynder
23. marts 2004 - 19:36 #10
Eller:

SELECT * FROM koncertplan where dato > UNIX_TIMESTAMP() ORDER BY dato LIMIT 0,2
Avatar billede milbak Nybegynder
23. marts 2004 - 19:49 #11
det virker sgu. Tak for det detox.
Kan I ikke begge(detox og jakobclausen) ligge et svar så splitter jeg pointsene.

Lige et sidste lille spørgsmål.
Hvad er forskellen på LIMIT 0,2 og LIMIT 2?
Avatar billede jakobclausen Nybegynder
23. marts 2004 - 19:52 #12
svar
Avatar billede detox Nybegynder
23. marts 2004 - 19:52 #13
Velbekommen. Der er ikke forskel på 'LIMIT 0,2' og 'LIMIT 2', da den sidste osse starter med 0, når der ikke er angivet noget. Altså: 'LIMIT start, antal'
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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