Avatar billede learner Praktikant
01. september 2004 - 07:27 Der er 13 kommentarer og
1 løsning

Kan man sammenligne felter i en quiry select from mysql

Hej, jeg sidder og skal lave en forespørgsel på min mysql db.

Jeg vil have den til at finde alle som er "udløbet." Den er udløbet når feltet how_long + dato er fortid! Dvs når man indsætter i tabellen så laves der et timestamp(feltnavn dato)og der skrives i feltet how_long hvor mange dage denne skal gemmes!


id = X
dato = timestamp
how_long = X (dage)

Nu vil jeg select'e de som er udløbet. Og jeg har lavet denne:

Select * FROM XXX WHERE (TO_DAYS(NOW())-TO_DAYS(dato))>how_long

Men kan man gøre det??? (skrive '>how_long') Og virker det ?

Hvis nej, hvordan kan jeg så gøre det?

Michael
Avatar billede fennec Nybegynder
01. september 2004 - 08:12 #1
Der er en funktion i MySQL der hedder DATEDIFF(date1,date2) som finder antal dage imellem 2 datoer.

Select * FROM XXX WHERE datediff(now(),dato)>how_long
Avatar billede learner Praktikant
01. september 2004 - 09:13 #2
Kanon! Tak Fennec :-)
Avatar billede learner Praktikant
01. september 2004 - 09:16 #3
Ups, vil det sige man godt kan skrive >how_long ???
Avatar billede fennec Nybegynder
01. september 2004 - 09:21 #4
Hvis how_long da er en kolonne (og et tal) i tabellen kan man.
Avatar billede learner Praktikant
01. september 2004 - 11:04 #5
tak! :-) Det vidste jeg ik! men ret smart trick...
Avatar billede fennec Nybegynder
01. september 2004 - 11:19 #6
Du kan lave meget avanceret matamatiske funktioner med en database, hvis man sætter sig ind i det. Men det er der ingen grund til at begynde på at forklare. Det du skal vide er at du kan bruge almindelige matematik funktioner i sql. Både på udtrækket og på betingelserne.

"select (how_long-2) as how_longRES from XXX WHERE ((datediff(now(),dato)-2)/5 ) > (how_long+4)"
Avatar billede learner Praktikant
01. september 2004 - 18:20 #7
okay, fedt, det må jeg kigge på en dag :-) Det lyder som guf!

Men jeg får en fejl på det her udtræk:
$Query = mysql($cfgDbDatabase, "SELECT wantsid, whichparts FROM wantsid WHERE datediff(now(),dato)>how_long")or die (mysql_error());

Fejlen:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(now(),dato)>how_long' at line 1

Kan du umiddelbart se fejlen?

På forhånd tak :-)
Avatar billede learner Praktikant
01. september 2004 - 18:22 #8
how_long er en kolonne og indeholder kun tal.....
Avatar billede fennec Nybegynder
02. september 2004 - 08:34 #9
hvilken version af MySQL kører du????
Avatar billede learner Praktikant
02. september 2004 - 08:42 #10
Hej igen, det er løst nu. jeg brugte :

WHERE (TO_DAYS(NOW())-TO_DAYS(dato))>how_long

Jeg har ik lige tjekket hvilken version det er! Jeg bruger B-one.net

Men tusind tak alligevel!
Avatar billede fennec Nybegynder
02. september 2004 - 08:52 #11
Det er problemet med MySQL. Da den stadig bliver udviklet kommer der hele tiden nye og smarte funktioner til. Men de er jo ikke understøttet i ældre versioner, så man skal altid tjekke om de er understøttet i den version man kører med. Det kunne tyde på at B-one kører med en ældre version.
Avatar billede learner Praktikant
02. september 2004 - 09:08 #12
Ok, Hvad så hvis nu b-one opgraderer mysql ligepludselig? virker det gamle så?

og hvad med php, når de en gang opgradere til php5, er det så kotume at man får en advarsel i forvejen? eller får man besked hvis der er nogle funktioner der udgår/ændres! Det har jeg tit tænkt over! Ved du det?
Avatar billede fennec Nybegynder
02. september 2004 - 09:21 #13
De gamle funktioner er understøttet i nye versioner af MySQL, så det skal du ikke være bange for. De nye funktioner er bare mere effektive. Det samme gælder PHP...

Men hvis B-one skifter til et nyere system, kan jeg kun forstille mig at kunderne får besked. Det er jo god reklame...
Avatar billede learner Praktikant
02. september 2004 - 09:33 #14
Ok, tusind tak nu! Du er flink! Nu sover jeg MEGET bedre om natten :o)
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