Avatar billede labisama Nybegynder
10. maj 2009 - 21:41 Der er 9 kommentarer og
1 løsning

Nærmeste db udtræk fra i dag

Hej med jer!

Jeg har en tabel i en mySQL database, hvor hvert data har en tid gemt i: tid_aar, tid_maaned, tid_dag, tid_time og tid_minut.

Hvordan kan jeg nemmest udskrive den tætteste (kommende) data i forhold til datoen i dag?

Jeg havde tænkt på noget: SELECT * FROM tabel WHERE DATE_FORMAT(xxx) > NOW() LIMIT 1

Men ved ikke lige helt hvordan, og om det kan lade sig gøre sådan?
Avatar billede majbom Novice
10. maj 2009 - 22:02 #1
du har minutter, timer osv. i hver sin kolonne?

det er ikke særlig optimalt, du har ikke mulighed for at lave det om til en enkelt kolonne, som gemmer det som et timestamp i stedet? så kan du meget nemmere bruge det...
Avatar billede fusion-it Nybegynder
10. maj 2009 - 22:05 #2
Hej

Nu vil jeg mere sige dette høre under SQL :)

http://www.w3schools.com/sql/sql_dates.asp

Måske du kan bruge det her :)


Good luck!
Avatar billede labisama Nybegynder
11. maj 2009 - 08:30 #3
Ja det hører nok under SQL. Men jeg vidste ikke om det kun kunne lade sig gøre via SQL.

#1 > Ja det er i hver sin konlonne. Det er fordi i INSERT situationen, skal brugeren selv vælge år, måned, dag osv.
Avatar billede fusion-it Nybegynder
11. maj 2009 - 09:52 #4
#1
Det er jo det han skriver, det anbefales dig a ændre dette så du nemmere kan styre dette, du kan jo godt smide hele i samme feldt i DB :)
Avatar billede showsource Seniormester
11. maj 2009 - 10:22 #5
$okdato = checkdate($_POST["month"],$_POST["day"],$_POST["year"]);

// checkdate tjekker om det er en gyldig dato

if(false == $okdato) {
echo"Fejl i dato'en!";
exit;
}

$savedate = $_POST["year"]."-".$_POST["month"]."-".$_POST["day"]."  ".$_POST["hour"].":".$_POST["minute"].":00";

Så gemmer du $savedate i en kolonne som er af datetime typen
Avatar billede labisama Nybegynder
11. maj 2009 - 12:09 #6
showsource > Det hjalp mig meget.

Hvis jeg får det ind i datetime, hvordan kan jeg så lave den SELECT?
Avatar billede showsource Seniormester
11. maj 2009 - 12:12 #7
SELECT * FROM tabel WHERE datofelt > NOW() ORDER BY datofelt ASC LIMIT 1
Avatar billede showsource Seniormester
11. maj 2009 - 12:13 #8
Avatar billede labisama Nybegynder
11. maj 2009 - 17:31 #9
Jamen det er super.

Har ikke lige afprøvet det færdig endnu, men kan godt se at det også var dét jeg havde i tankerne.

Svar.
Avatar billede showsource Seniormester
11. maj 2009 - 18:57 #10
ok og go' kodning :O)
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