Avatar billede mesterhakkeren Nybegynder
23. juni 2006 - 21:13 Der er 13 kommentarer og
1 løsning

vælg data fra nuværende uge

jeg har en masse data i en tabel, og er kommet frem til at jeg ikke kan finde ud af, at sammensætte en ordenlig SQL sætning.. :/

her er det tidsformat jeg har at arbejde med:
2006-01-28 05:37:07

Feltet i tabellen hedder 'tid'...



jeg har prøvet en masse forskelligt med disse funktioner nedenunder.. men det gik ret meget i kiks...

WEEKOFYEAR
DATE_SUB
DateAdd
Avatar billede arne_v Ekspert
23. juni 2006 - 21:16 #1
Hvis tid er et DATETIME felt saa boer:

WHERE YEAR(tid)=YEAR(NOW()) AND WEEKOFYEAR(tid)=WEEKOFYEAR(NOW())

virke
Avatar billede mesterhakkeren Nybegynder
24. juni 2006 - 00:07 #2
jeg får smidt fejlkode #1064 tilbage "Error: 1064 SQLSTATE: 42000  (ER_PARSE_ERROR)"

her er min samlet sql sætning:

SELECT * FROM table WHERE YEAR(tid)=YEAR(NOW()) AND WEEKOFYEAR(tid)=WEEKOFYEAR(NOW())



nogen idé til hvad der kan være galt ?
Avatar billede mesterhakkeren Nybegynder
24. juni 2006 - 00:29 #3
det ser ud til at den mysql server jeg har til rådighed er v4.0.24
Avatar billede mesterhakkeren Nybegynder
24. juni 2006 - 00:44 #4
jeg sad og "legede" lidt, og kom frem til noget selv.. jeg er ikke helt sikker, men kan du ikke tyde denne sætning for mig ??

SELECT * FROM table WHERE DATE_FORMAT(NOW(),'%v') < tid ORDER BY id DESC
Avatar billede arne_v Ekspert
24. juni 2006 - 01:05 #5
DATE_FORMAT(NOW(),'%v')

returnerer uge nummeret som tekst streng
Avatar billede arne_v Ekspert
24. juni 2006 - 01:06 #6
WEEKOFYEAR kræver MySQL 4.1.1.
Avatar billede arne_v Ekspert
24. juni 2006 - 01:07 #7
men

WHERE YEARWEEK(tid)=YEARWEEK(NOW())

burde virke fra MySQL 3.23.8
Avatar billede mesterhakkeren Nybegynder
25. juni 2006 - 02:22 #8
vil det så sige at, denne er løsningen ?

SELECT * FROM table WHERE YEAR(tid)=YEAR(NOW()) AND YEARWEEK(tid)=YEARWEEK(NOW())
Avatar billede arne_v Ekspert
25. juni 2006 - 03:27 #9
SELECT * FROM table WHERE YEARWEEK(tid)=YEARWEEK(NOW())

da YEARWEEK inkluderer år
Avatar billede mesterhakkeren Nybegynder
25. juni 2006 - 04:36 #10
det vil simpelhen sige at denne: SELECT * FROM table WHERE YEARWEEK(tid)=YEARWEEK(NOW())

vælger alt fra den aktuelle uge... cool...

du må meget gerne folde et svar sammen, og svinge battet.... hehe
Avatar billede mesterhakkeren Nybegynder
25. juni 2006 - 06:14 #11
kom lige i tanke om en sidste ting...


hvis man nu skal hente data ud for hver uge dag, så man har en sqæ sætning for hver aktuel uge dag ??

Det er ok, med 7 sql sætninger med mig.


Jeg kan godt afsætte flere ponts.
Avatar billede arne_v Ekspert
25. juni 2006 - 16:55 #12
svar
Avatar billede arne_v Ekspert
25. juni 2006 - 16:57 #13
enten

SELECT ... WHERE WEEKDAY(tid)=0
UNION
...
UNION
SELECT ... WHERE WEEKDAY(tid)=6

eller en

SELECT ... GROUP BY WEEKDAY(tid)

lidt afhængig af hvordan dine data og din query er
Avatar billede mesterhakkeren Nybegynder
25. juni 2006 - 20:43 #14
ok..super.. du har været til meget hjælp Arne.. takker..
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