Avatar billede davidskp Nybegynder
14. februar 2005 - 09:31 Der 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...

/dave
Avatar billede codebase Praktikant
14. februar 2005 - 10:23 #1
si, det kan du

SELECT CONCAT(aar,maaned,dag) AS dato WHERE dato ='20050214'
Avatar billede davidskp Nybegynder
14. februar 2005 - 10:41 #2
jeg prøver om jeg kan få det til at virke når jeg kommer hjem senere og vender så tilbage med resultatet :)
Avatar billede 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)
Avatar billede davidskp Nybegynder
14. februar 2005 - 14:43 #4
sandbox hvordan lægger jeg så datoen ind som MySQL's DATE funktion når brugeren vælger datoen fra en drop down menu...altså:

1.
2.
3.
osv...

januar
februar
marts
osv...

2005
2006
2007
osv...
Avatar billede Slettet bruger
14. februar 2005 - 15:09 #5
Når du i forvejen har som tal er det faktisk ret simpelt, for MySQL bruger nemlig selv det format, som du selv ville samle til ;-)

Den lange udgave af formatet er YYYY-MM-DD HH:MM:SS men det kan kortes ned til YYYYMMDDHHMMSS eller bare YYYYMMDD, hvis man kun skal bruge datoen.
Avatar billede davidskp Nybegynder
14. februar 2005 - 15:13 #6
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?
Avatar billede 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.)

$dato=$_POST['aar'] . $_POST['md'] . $_POST['dag'];

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']);
Avatar billede davidskp Nybegynder
14. februar 2005 - 15:49 #8
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?
Avatar billede davidskp Nybegynder
14. februar 2005 - 15:59 #9
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?
Avatar billede 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.
Avatar billede 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.
Avatar billede davidskp Nybegynder
14. februar 2005 - 16:02 #12
ligemeget - jeg fandt ud af det... sku jo bare skrive: SELECT *, DATE_FORMAT(datofelt, '%e/%c %Y') AS datotekst FROM tabel...
Avatar billede davidskp Nybegynder
14. februar 2005 - 16:04 #13
heh du var lige lidt hurtigere der :)

Jeg synes du ska ha mere end 30 pts for din hjælp...kan man ikke lægge flere points til sit spm?
Avatar billede Slettet bruger
14. februar 2005 - 16:10 #14
Avatar billede davidskp Nybegynder
14. februar 2005 - 16:17 #15
perfekt - smider I lige begge et svar så? :)
Avatar billede Slettet bruger
14. februar 2005 - 16:21 #16
Her er fra mig.
Avatar billede Slettet bruger
14. februar 2005 - 16:21 #17
Hov ;-)
Avatar billede codebase Praktikant
14. februar 2005 - 16:22 #18
.
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