Re: Ren MYSQL fråga ang IF satser och datu m beräkningar
Fråga: Vad ska du använda fjärde kolumnen till (den som inte har nåt namn i exemplet, men vi kan kalla den 'Something_5' ;-)? Om du bara ska använda den för att testa om det är rätt dag / månad för att posten ska användas, så är väl det enklaste sättet att låta databasen ta hand om det och bara returnera de poster du vill ha? Om du tänker dig hur en if-elsesats kommer att se ut i förlängningen, när du vill kolla efter den hundrade sexmånadersperioden, så blir det en lite otymplig SQL-sats du får. Om vi antar att du endast vill kolla om datumet ligger i en jämn sexmånadersperiod bakåt, så borde du kunna lösa det med en WHERE klausul, ungefär så här: SELECT a AS vettigt_namn_1, b as vettigt_namn_2 FROM vettigt_tabellnamn WHERE MOD(PERIOD_DIFF(DATE_FORMAT(c, '%Y%m%d'), DATE_FORMAT(CURDATE(), '%Y%m%d')),6) = 0; Detta baserat på antagandet att du vill räkna kalendermånader och inte nånting bokföringsobskyrt som 30 dagarsperioder. ;-) c är alltså namnet på den kolumn du vill matcha kalenderkollen mot. Det blir lite rörigt eftersom man måste göra om datumen till strängar för PERIOD_DIFF(). Sen bara kollar vi om vi får nån rest vid division med 6. Får vi inte det så är det exakt 6, 12, 18, 24 o.s.v. månader sen. Vill du se om händelsen inträffar under den närmaste månaden? Byt ut = 0 mot = 1. Så här: SELECT a AS vettigt_namn_1, b as vettigt_namn_2 FROM vettigt_tabellnamn WHERE MOD(PERIOD_DIFF(DATE_FORMAT(c, '%Y%m%d'), DATE_FORMAT(CURDATE(), '%Y%m%d')),6) = 1; Just ja, du kanske bara vill ha med de händelser som inträffar under eller efter dagens datum i varje månad också? Då lägger vi till en WHERE sats med DAYOFMONTH(): DAYOFMONTH(c) = DAYOFMONTH(CURDATE()) Så hela satsen ser ut så här: SELECT a AS vettigt_namn_1, b as vettigt_namn_2 FROM vettigt_tabellnamn WHERE MOD(PERIOD_DIFF(DATE_FORMAT(c, '%Y%m%d'), DATE_FORMAT(CURDATE(), '%Y%m%d')),6) = 1 AND DAYOFMONTH(c) = DAYOFMONTH(CURDATE()); Lycka till! __ /ony --- Thursday, May 6, 2004, 10:40:17 AM, you wrote: Hej Försöker köra ett IF statement i MYSQL men det verkar inte fungera. Jag kör följande USE databas SELECT Item_A AS 'Something 1', Item_B AS 'Something 2', Item_C AS 'Something 3', INTERVAL 6 MONTH + Item_B AS 'Something 4', BEGIN IF CURDATE() = INTERVAL 6 MONTH + Item_C THEN SELECT INTERVAL 12 MONTH + Item_C [ELSEIF CURDATE() = INTERVAL 12 MONTH + Item_C THEN SELECT INTERVAL 18 MONTH + Item_C] ELSE INTERVAL 6 MONTH + Item_C) END IF FROM Table ; Vad jag vill göra är följande; Jag har en post Item_C som är ett datum. Sex månader efter Item_C skall en händelse inträffa, sedan skall den händelsen fortsätta att inträffa var 6:e månad intill dess att den post som Item_C är kopplad till får status Upphörd. Med IF satsen har jag försöker jag åstadkomma följande; Om dagensdatum är större än eller lika med Item_C + 6 månader då skall i stället Item_C + 12 månader osv användas. Tanken är att om Item_C + 6 månader ger ett resultat som är dåtid dvs ligger i tiden före dagens datum då skall i stället närmast period efter dagens datum sökas och visas. Nästa steg är att bara visa resultatet om föregående stycke är lika med att resultat infaller under nästkommande månad. Det var lite invecklat det här...men om någon har lust eller känner sig hugad att bidra med synpunkter osv så tas det tacksamt emot. Thomas
Ren MYSQL fråga ang IF satser och dat um beräkningar
Hej Försöker köra ett IF statement i MYSQL men det verkar inte fungera. Jag kör följande USE databas SELECT Item_A AS 'Something 1', Item_B AS 'Something 2', Item_C AS 'Something 3', INTERVAL 6 MONTH + Item_B AS 'Something 4', BEGIN IF CURDATE() = INTERVAL 6 MONTH + Item_C THEN SELECT INTERVAL 12 MONTH + Item_C [ELSEIF CURDATE() = INTERVAL 12 MONTH + Item_C THEN SELECT INTERVAL 18 MONTH + Item_C] ELSE INTERVAL 6 MONTH + Item_C) END IF FROM Table ; Vad jag vill göra är följande; Jag har en post Item_C som är ett datum. Sex månader efter Item_C skall en händelse inträffa, sedan skall den händelsen fortsätta att inträffa var 6:e månad intill dess att den post som Item_C är kopplad till får status Upphörd. Med IF satsen har jag försöker jag åstadkomma följande; Om dagensdatum är större än eller lika med Item_C + 6 månader då skall i stället Item_C + 12 månader osv användas. Tanken är att om Item_C + 6 månader ger ett resultat som är dåtid dvs ligger i tiden före dagens datum då skall i stället närmast period efter dagens datum sökas och visas. Nästa steg är att bara visa resultatet om föregående stycke är lika med att resultat infaller under nästkommande månad. Det var lite invecklat det här...men om någon har lust eller känner sig hugad att bidra med synpunkter osv så tas det tacksamt emot. Thomas
Mysql fråga
Hejsan Jag har en liten fråga ang. Mysql, jag installerade precis Woody tidigare har jag alltid installerat apache, php4 mysql ifrån source. Men idag gjorde jag det ifrån apt-get, allting fungerar super förrutom Mysql:en som trilskas nått enormt. Jag har absolut inga rättigheter nånstans på den, jag kan inte en logga på. Nån som har nån aning vad jag kan ha gjort för fel? Fel meddelandet: mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user: '[EMAIL PROTECTED]' (Using password: YES)' Mvh. /-Lando
Re: Mysql fråga
On Mon, Jun 24, 2002 at 11:27:05AM +0200, Lando wrote: Fel meddelandet: mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user: '[EMAIL PROTECTED]' (Using password: YES)' Default installationen av mysql har inget lösenord på root kontot. Om du inte har satt ett själv skulle jag rekomendera att logga in utan lösenord. -- Peter Mathiasson, peter at mathiasson dot nu, http://www.mathiasson.nu GPG Fingerprint: A9A7 F8F6 9821 F415 B066 77F1 7FF5 C2E6 7BF2 F228 pgpJPCtCCCTxO.pgp Description: PGP signature
RE: Mysql fråga
Jag har försökt köra /usr/bin/mysqladmin -u root password 'new-password' som installationen säger men får fortfarande samma fel. När jag har gjort detta innan så har det ju fungerat direkt :( Fel meddelande: /usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user: '[EMAIL PROTECTED]' (Using password: NO)' /-Lando -Original Message- From: Peter Mathiasson [mailto:[EMAIL PROTECTED] Sent: den 24 juni 2002 11:35 To: debian-user-swedish@lists.debian.org Subject: Re: Mysql fråga On Mon, Jun 24, 2002 at 11:27:05AM +0200, Lando wrote: Fel meddelandet: mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user: '[EMAIL PROTECTED]' (Using password: YES)' Default installationen av mysql har inget lösenord på root kontot. Om du inte har satt ett själv skulle jag rekomendera att logga in utan lösenord. -- Peter Mathiasson, peter at mathiasson dot nu, http://www.mathiasson.nu GPG Fingerprint: A9A7 F8F6 9821 F415 B066 77F1 7FF5 C2E6 7BF2 F228 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Mysql fråga
On Mon, 24 Jun 2002 [11:52], Lando ([EMAIL PROTECTED]) wrote: Jag har försökt köra /usr/bin/mysqladmin -u root password 'new-password' som installationen säger men får fortfarande samma fel. När jag har gjort detta innan så har det ju fungerat direkt :( Fel meddelande: /usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user: '[EMAIL PROTECTED]' (Using password: NO)' Första gången skriver du att du får (Using password: YES), nu säger du att du får (Using password: NO), hur ska du ha det egentligen? (; Är det så att du satt ett lösenord med mysqladmin. Så får du antingen ha en ~/.my.cnf där ditt lösenord är skrivet. (följ exemplet i /etc/mysql/my.cnf). Eller logga in med. mysql -u root -p Har du satt ett lösenord med mysqladmin, och inte är root, (men använder -u root), så kommer du behöva använda flaggan -p för att skriva in ditt tidigare pass, för att sedan kunna byta. /d -- ... david röhr | o_ .. unix systems consultant | o/ /\ SCNA, SCSA . qbranch system management | /|_, \\ LCP Certified. www.qbranch.se/ ` -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]