Ga naar inhoud

query php/mysql datum


Anoniem2

Aanbevolen berichten

Momenteel heb ik onderstaande code:\r\n[code]\r\nSELECT tabel1.nr, tabel2.datum\r\nFROM tabel1\r\nJOIN tabel2 ON tabel1.nr = tabel2.nr\r\nWHERE DATE_FORMAT( geldigtot, \'%Y\' ) = YEAR( NOW( ) )\r\nAND tabel2.datum\r\nBETWEEN DATE_FORMAT(tabel1.geldigtot - INTERVAL 2 YEAR, %Y-07-01\' )\r\nAND DATE_FORMAT( NOW( ) ,\'%Y-07-01\' )\r\n[/code]\r\n\r\nLokaal werkt het prima, zet ik het \'live\' werkt het niet. Ik krijg dan meer gegevens te zien dan ik zou verwachten. Als ik de beide date_format-gedeeltes bij between vervang door harde data en deze tussen \" \" zet gaat het wel goed. Ik zou het echter graag dynamisch hebben.\r\nVolgens mij zou ik dus \" \" om de berekende twee data moeten zien te krijgen. Ben er al de hele dag mee bezig geweest om deze code uiteindelijk te krijgen, maar dat laatste stukje lukt me (vandaag) niet meer :(
Link naar reactie
Ben al aan het stoeien geweest met het wel/niet opnemen van de tabelnaam in query. Maakte geen verschil. \nScript moet van aantal mensen bepalen hoe vaak ze in een periode aanwezig zijn geweest. Aantal rijen (mensen) klopt, maar het aantal keer aanwezig niet. \nAls ik het lokaal uitvoer, wordt netjes het aantal keer aanwezig getoond tussen de twee data, maar op de webserver telt hij alle keren aanwezig.\n\n\nedit: heb het script getest bij een andere host en daar krijg ik wel dezelfde uitkomsten als lokaal. Heeft dit te maken met php-versie en/of (beveiligings)instellingen?
Link naar reactie
heeft met mysql versie te maken denk ik. Ik heb het niet nagegaan, maar het zou zomaar kunnen dat je een functie uit mysql 5 gebruikt en die werkt dan niet op een server die nog op versie 4 draait. Daar zou je eens naar kunnen kijken.\n\n Als dat de oorzaak is zou je kunnen overwegen om alleen de data op te halen en het daadwerkelijk uitrekenen in php te programmeren. Niet zo efficient, maar dan werkt \'t tenminste.
Link naar reactie
Heb nog eens gekeken naar je code, en denk dat dit mogelijk het probleem is:\r\n\r\n[QUOTE=Obelix71;556039]\r\n[code]\r\nDATE_FORMAT(tabel1.geldigtot - INTERVAL 2 YEAR, %Y-07-01\' )\r\n[/code][/QUOTE]\r\n\r\nIk kan nergens in de mysql handleiding vinden dat je INTERVAL op die manier mag gebruiken.\r\n\r\nJe zou als alternatief eens iets als het volgende kunnen proberen. Heb het niet getest overigens.\r\n\r\n[CODE]DATE_ADD(DATE_FORMAT(tabel1.geldigtot, %Y-07-01\' ), - INTERVAL 2 YEAR)[/CODE]
Link naar reactie
Dank voor je reactie FooBar.\n\nBen creatief, maar meeste dingen bedenk ik o.b.v. tips/trucs die ik vind op internet. Waar ik die constructie vandaan heb, zou ik overigens zo niet weten.\nHet lijkt wel te werken lokaal en bij 1 van de hostingbedrijven :) ;-)\n\nMaar DATE_ADD? Daar zou ik nou weer niet opgekomen zijn. \nHeb er even naar gekeken (lokaal) en krijg als foutmelding: \'Notice: 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\' en dan de date_add constructie.\nOpbouw zou overigens DATEADD(datepart,number,date) moeten zijn. Diverse \'varianten\' geprobeerd, de foutmelding blijft. Nu helaas druk met aantal andere zaken; zal op ander tijdstip nog eens kijken.\nAls mijn constructie geen \'officieel goedgekeurde\' scriptwijze is, waarom krijg ik daar dan geen foutmelding op?
Link naar reactie
[QUOTE=Obelix71;556249]Als mijn constructie geen \'officieel goedgekeurde\' scriptwijze is, waarom krijg ik daar dan geen foutmelding op?[/QUOTE]\r\nGeen idee, maar ik kan in de handleiding niet vinden dat het zou moeten kunnen, vandaar.\r\n\r\nOok DATE_ADD zou met underscore moeten zijn ([url]http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add[/url])\r\n\r\nIs tabel1.geldigtot trouwens een veld van het type DATE (of DATETIME)? In dat geval zou je naar mij idee geen DATE_FORMAT hoeven gebruiken.
Link naar reactie
Je schijnt DATE_ADD en ADDDATE te hebben :s\n\ngeldigtot is van het type DATE. Ik wil alles weten met als peildatum 1 juli van een willekeurig jaar. Daarom de formule DATE_FORMAT.\n\nBen nog even snel aan het testen geweest. \ncode aangepast in:\n[code]\nBETWEEN DATE_FORMAT(DATE_ADD(geldigtot, INTERVAL -2 YEAR), \\\'%Y-07-01\\\') AND DATE_FORMAT(NOW(), \\\'%Y-07-01\\\')\n[/code]\nGeeft lokaal de juiste (=verwachte/verlangde) info, bij de host niet.\n\nVoor dit moment geloof ik het wel. Het werkt bij de nieuwe host en dat vind ik op dit moment het belangrijkste. \nDank!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...