14. februar 2005 - 09:31Der er
16 kommentarer og 2 løsninger
Hente datoer der er før dags dato og bagefter kommende datoer
Jeg har en tabel hvor jeg gemmer datoen for arrangementer. Jeg gemmer dem i 3 felter som 'dag' maaned' og 'aar' feks. '14' '02' '2005' Jeg vil så gerne først hente alle de datoer ud som er før idag og derefter hente kommende datoer... Kan jeg i SELECT samle de 3 felter så man får 20050214 for så er det jo ikke noget problem...
jeg prøver om jeg kan få det til at virke når jeg kommer hjem senere og vender så tilbage med resultatet :)
Synes godt om
Slettet bruger
14. februar 2005 - 14:26#3
Efter min mening er det tit lettere at have med at gøre, hvis man bruger MySQLs DATETIME-datatype til at gemme datoer. Så kan man for eksempel lave ting i denne stil:
Hent alt for denne uge: SELECT * FROM tabel WHERE YEAR(datofelt)=YEAR(NOW()) AND WEEK(datofelt)=WEEK(NOW())
Hent alt indenfor 5 dage fra nu - både før og efter: SELECT * FROM tabel WHERE datofelt BETWEEN DATE_SUB(NOW(), INTERVAL 5 DAY) AND DATE_ADD(NOW(), INTERVAL 5 DAY)
min form outputter feks 14, 02 og 2005 - hvordan får jeg det ind i mySQL's date funktion som 20050214?
og hvordan kan jeg få den til at hive det ud af databasen igen som feks 14/2 2005?
Synes godt om
Slettet bruger
14. februar 2005 - 15:32#7
Nu har du jo glemt at fortælle, hvilket sprog du bruger, så jeg gætter på PHP, da det er den katekori, du ellers har stillet spørgsmål i. (Lidt heldigt, for jeg kan ikke ASP.)
Så har du en dato, som MySQL kan forstå. Den sætter du bare ind på samme måde som enhver anden værdi, du sætter ind i din database. Du skal bare have sat felttypen i tabellen til DATE.
Når du henter ud kan du enten få MySQL til at formatere datoen
SELECT DATE_FORMAT(datofelt, '%e/%c %Y') AS datotekst FROM tabel....
eller hente et timestamp, som så kan formateres med PHP
SELECT UNIX_TIMESTAMP(datofelt) AS tid ....
Derefter
echo date('j/n Y',$row['tid']);
Prøv også
set_locale(LC_TIME,'da', 'da_DK', 'danish'); echo date('l j F Y', $row['tid']);
super! tror jeg har fået det til at virke nu. Mange tak! :) Hva med at jeg giver pointene i dette spm til codebase da han jo svarede på det jeg spurgte om og så opretter en ny tråd kaldet "points til sandbox" så du kan få points for din hjælp?
lige et enkelt spm mere: når jeg bruger SELECT DATE_FORMAT(datofelt, '%e/%c %Y') AS datotekst FROM tabel... henter den jo kun datoen ud...hvad hvis jeg vil hente al data fra tabellen og samtidig konvertere datoen?
Synes godt om
Slettet bruger
14. februar 2005 - 15:59#10
Det er din beslutning. Det kan også lade sig gøre at dele point mellem os, hvis du vil det.
Synes godt om
Slettet bruger
14. februar 2005 - 16:01#11
SELECT DATE_FORMAT(datofelt, '%e/%c %Y') AS datotekst, * FROM
Eller endnu bedre: Skriv de felter, du skal bruge med komma imellem.
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.