Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:04 Der er 26 kommentarer og
1 løsning

Giver WEEKDAY problemer?

Ja, det kan jeg selv svare på, for ellers havde jeg nok ikke oprettet dette spørgsmål ;-)

Jeg har et datofelt, hvor jeg skal have trukekt henholdvis ugenr. og nummer på ugedagen ud, startene med 1.

Jeg lagde mærke til at man via DATE_FORMAT(%v) kunne få ugenummeret startende med 1, men der er ikke nogen funktion som kan det samme med dagsnr., altså hvor det starter med mandag som 1.

Så jeg besluttede mig for WEEKDAY(), men den virker overraskende mildt sagt.

Dette er mit kald:

SELECT WEEKDAY( '2005-02-14' ) AS rigtig, r531b AS original, WEEKDAY( r531b ) AS forkert FROM ordre5 WHERE id =36

og resultatet:

rigtig  original  forkert 
0      2004-02-14    5

Ser det ikke noget mærkeligt ud, hvad går der egentlig galt?
Avatar billede bromer Nybegynder
30. marts 2005 - 12:09 #1
Det er da ikke mærkeligt. Hvis man hopper ind på MySQL manualen [1] kan man se at WEEKDAY har følgende beskrivelse:

WEEKDAY(date)
Returns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 = Sunday)

og ifølge min kalender er 2005-02-14 en mandag så dit 0 passer da fint.

[1] http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
Avatar billede barklund Nybegynder
30. marts 2005 - 12:10 #2
2005-02-14 != 2004-02-14

Men derudover en den vel som ventet:

WEEKDAY(date)

Returns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 = Sunday).

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
        -> 1
mysql> SELECT WEEKDAY('1997-11-05');
        -> 2

:)

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:14 #3
Ja, men hvorfor returnere den så 5 under forkert, der bruger jeg jo bare feltnavnet i stedet for?
Avatar billede bromer Nybegynder
30. marts 2005 - 12:15 #4
fordi det ikke er samme år vel?
Avatar billede bromer Nybegynder
30. marts 2005 - 12:16 #5
2004-02-14 er en lørdag hvilket passer med 5
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:16 #6
Det jeg prøvede at vise, hvad forskellen afhængig af om jeg bruger en fast dato og en dato som kommer fra db'en, derudover tog jeg selve datofeltet med også, så I kan se at datoen står rigtigt der i.
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:16 #7
Damnnn, øjeblik
Avatar billede barklund Nybegynder
30. marts 2005 - 12:18 #8
(hvilket jeg vist startede mit indlæg med at sige)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:18 #9
Hold kæft hvor dum kan man være, ingen kommentarer tak ;-P

Nå bromer det var jo dig som opdagende først.
Avatar billede bromer Nybegynder
30. marts 2005 - 12:20 #10
vent på barklund så.. han skal da have 5 points :)
Avatar billede barklund Nybegynder
30. marts 2005 - 12:21 #11
Hovhov!

Kommentar: barklund
30/03-2005 12:10:09

2005-02-14 != 2004-02-14

Er da vist ganske entydigt - eller?
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 12:21 #12
Fint det skal ikke være sådan, det er jo også et voldsomt beløb ;-)
Avatar billede barklund Nybegynder
30. marts 2005 - 12:21 #13
Og et svar :)
Avatar billede barklund Nybegynder
30. marts 2005 - 12:22 #14
(og i hvert fald før bromer)
Avatar billede bromer Nybegynder
30. marts 2005 - 12:23 #15
barklund: Man lægger jo ikke mærke til det der står på første linie. Derfor reklamer i aviser også koster mere på side to.. (eller noget)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:00 #16
Så så, ingen slagsmål her, tak ;-)

Jeg tolkede bare bromers først kommentar som at han også havde set forskellen, men måske misfortolkede jeg der.

Men barklund bare lige et svar
Avatar billede bromer Nybegynder
30. marts 2005 - 13:01 #17
barklund har rent faktisk svaret.. og barklund skaber sig kun fordi han har sin periode :)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:01 #18
Sådan håber det er tilfredsstillingende.

Bromer -> Godt argument der ;-)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:02 #19
Ja, det så jeg, fik ikke lige opdateret
Avatar billede bromer Nybegynder
30. marts 2005 - 13:04 #20
det er ikke et argument, det er bare et faktum. Men super generende at han har vundet de sidste par point kampe.. jeg må indrømme at jeg ikke just sidder med håne-fanen lige pt
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:16 #21
Okay, så må du jo prøve at komme længere frem i skoen, hvis det kan lade sig gøre, ellers tag dem af ;-)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:18 #22
Bare lige for en sikkerheds skyld. De har endnu ikke lavet en funktion i DATE_FORMAT som kan levere dagsnr. startende med mandag, eller hvad?
Avatar billede bromer Nybegynder
30. marts 2005 - 13:23 #23
Tror jeg ikke, men du kan lægge een til og tage resten mod 7
Avatar billede barklund Nybegynder
30. marts 2005 - 13:25 #24
Nej - men det kan løses forholdsvist nemt med en case, men det er nok ingen fordel :)
Avatar billede barklund Nybegynder
30. marts 2005 - 13:25 #25
(case er sjovere)
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:53 #26
Selvfølgelig, men hvad så med ugenr. Det havde da været noget nemmere bare at kalde DATE_FORMAT(datofelt, '%w - %ugadag1-7') og så få f.eks. returneret 12 - 3, svarende til onsdag i uge 12
Avatar billede lsskaarup Nybegynder
30. marts 2005 - 13:54 #27
Hov glem først del af min kommentar, den skulle have været slettet.
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

IT-JOB

Netcompany A/S

Test Consultant

Capgemini Danmark A/S

Java Engineer

Unik System Design A/S

QA Engineer