Avatar billede mjl Nybegynder
24. september 2005 - 23:10 Der er 13 kommentarer og
1 løsning

Finde poster fra bestemt måned i MySQL

Hej der...

Jeg har indsat en del poster i MySQL hvor feltet dato er sat ind med time() .....

Nu vil jeg gerne hente alle poster, for denne måned (sep.), og kun dem - hvordan gør jeg det?

hilsen Conrad
Avatar billede mjl Nybegynder
24. september 2005 - 23:13 #1
Posterne består jo så af 10 ciffrede tal f.eks. 1127635230
Avatar billede erikjacobsen Ekspert
24. september 2005 - 23:25 #2
Find timestamp for 1. september 2005 kl. 00.00 og for 30. september 2005 kl. 23.59.59, og så en "SELECT ... WHERE 222222<=ts AND ts<=333333"  (hvor jeg lige antager at 222222 og 333333 er de to timestamps du har fundet, og dit felt hedder 'ts')
Avatar billede mjl Nybegynder
24. september 2005 - 23:45 #3
Ja - skal så bare lige ordne problemet med 30 og 31 dage i måneden...
Avatar billede mjl Nybegynder
24. september 2005 - 23:47 #4
Fordi det er aktuelle måned, hver måned...
Avatar billede coderdk Praktikant
24. september 2005 - 23:47 #5
Jeg ville gøre som erik skriver. Du kan dog også gøre sådan:

SELECT * FROM dintabel WHERE DATE_FORMAT(FROM_UNIXTIME(dato),'%Y%m') = '200509'
Avatar billede erikjacobsen Ekspert
24. september 2005 - 23:49 #6
Jah, men det med 30 31 kan du jo klare ved at tage den 1. oktober 2005 kl. 00.00 og trække et sekund fra.

Det vi ikke være synderligt effektivt at gøre som coderdk siger, da man så skal konvertere datoen for hver eneste række. Har du mere end et legetøjssystem, vil det gå for langsomt.
Avatar billede coderdk Praktikant
24. september 2005 - 23:50 #7
Ok, jeg bør nok forklare hvorfor jeg ville vælge at bruge eriks. Det alternativ jeg har skrevet, giver ikke særlig god performance. Mit råd er at følge eriks og:

$start = mktime( 0, 0, 0, 9, 1, 2005 );
$slut = mktime( 0, 0, 0, 10, 0, 2005 );
$sql = "SELECT * FROM dintabel WHERE dato BETWEEN $start AND $slut";
Avatar billede mjl Nybegynder
24. september 2005 - 23:58 #8
$slut = mktime( 0, 0, 0, 10, 0, 2005 );

Tager ikke 30/9 med ????
Avatar billede coderdk Praktikant
25. september 2005 - 00:02 #9
Erh, jo:

    echo date( "d/m-Y", mktime( 0, 0, 0, 10, 0, 2005 ) );

Den burde tage begge med: http://dev.mysql.com/doc/mysql/en/comparison-operators.html

$slut = mktime( 0, 0, 0, 10, 1, 2005 );
Avatar billede coderdk Praktikant
25. september 2005 - 00:02 #10
Hov, den sidste linje, efter linket, skulle ikke have været med :P
Avatar billede erikjacobsen Ekspert
25. september 2005 - 00:03 #11
Du skal gøre som jeg skriver: "tage den 1. oktober 2005 kl. 00.00 og trække et sekund fra."

$slut = mktime( 0, 0, 0, 10, 1, 2005 )-1;
Avatar billede mjl Nybegynder
25. september 2005 - 00:05 #12
Ja - Erik - det ser ud til at virke fint - 1000 tak begge - svar, for points!

Tak igen!!!
Avatar billede erikjacobsen Ekspert
25. september 2005 - 00:09 #13
Ingen point til mig, tak.
Avatar billede coderdk Praktikant
25. september 2005 - 00:09 #14
hehe ok ;)
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