login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Opgelost] Sql - Verschil in dagen berekenen. (Opgelost)

Offline mike87 - 22/01/2008 10:06 (laatste wijziging 22/01/2008 11:26)
Avatar van mike87Nieuw lid Ik moet in een nieuwsbrief systeem ervoor zorgen dat leden die langer dan een maand lid zijn een nieuwsbrief ontvangen.

Nu deed ik dit eerst met DATEDIFF en dit werkte niet omdat de MySql versie te laag was, deze is 4.0.

Na wat zoeken op Google kwam ik uit op de volgende query:

FLOOR(unix_timestamp(Aanmelddatum ) - unix_timestamp(NOW()) / 86400) as VerschilDagen

Maar hier krijg ik een fout op namelijk:
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 'FLOOR(unix_timestamp(Aanmelddatum ) - unix_timestamp(NOW()) / 8...

Als ik dit stukje uit me query laat werkt het wel, dus de fout zit hem hierin, maar wat mankeerd hier nu aan? Ik zie er namelijk geen fout in.

6 antwoorden

Gesponsorde links
Offline marten - 22/01/2008 10:08
Avatar van marten Beheerder Laat je hele query eens zien en een voorbeeld tabel. (Let op codetags aub)
Offline mike87 - 22/01/2008 10:18
Avatar van mike87 Nieuw lid
  1. $sql = " SELECT *, DATE_SUB(Afmelddatum, INTERVAL 14 DAY) as maildatum, DATE_FORMAT(Afmelddatum, '%d-%m-%Y') AS datum, DATE_FORMAT(Aanmelddatum, '%d-%m-%Y') AS newdatum FROM kandidaten, FLOOR(unix_timestamp(Aanmelddatum ) - unix_timestamp(NOW()) / 86400) as VerschilDagen WHERE cv_weergeven = '1' AND VerschilDagen >= 30 ORDER BY ID DESC";


En het veld Aanmelddatum heeft een datetime type.
De hele tabel is wat groot om te posten. Neem ook aan dat je niet meer informatie als dit nodig heb.
Offline marten - 22/01/2008 10:29
Avatar van marten Beheerder Geef de structuur van de tabel maar even. Dan kan ik even de fout reproduceren.
Offline mike87 - 22/01/2008 10:34
Avatar van mike87 Nieuw lid
  1. CREATE TABLE `kandidaten` (
  2. `ID` int(11) NOT NULL AUTO_INCREMENT,
  3. `Naam` varchar(255) NOT NULL DEFAULT '',
  4. `Adres` varchar(255) NOT NULL DEFAULT '',
  5. `Woonplaats` varchar(255) NOT NULL DEFAULT '',
  6. `Geboortedatum` varchar(255) NOT NULL DEFAULT '',
  7. `Telefoon` varchar(255) NOT NULL DEFAULT '',
  8. `Emailadres` varchar(255) NOT NULL DEFAULT '',
  9. `Wervingsregel` varchar(255) NOT NULL DEFAULT '',
  10. `MBO` enum('0','1') DEFAULT NULL,
  11. `HBO` enum('0','1') DEFAULT NULL,
  12. `WO` enum('0','1') DEFAULT NULL,
  13. `Leider` enum('0','1') DEFAULT NULL,
  14. `Bewaker` enum('0','1') DEFAULT NULL,
  15. `Inspirator` enum('0','1') DEFAULT NULL,
  16. `Bemiddelaar` enum('0','1') DEFAULT NULL,
  17. `Management` enum('0','1') DEFAULT NULL,
  18. `Uitvoerend` enum('0','1') DEFAULT NULL,
  19. `Administratief` enum('0','1') DEFAULT NULL,
  20. `Beleid` enum('0','1') DEFAULT NULL,
  21. `Commercie` enum('0','1') DEFAULT NULL,
  22. `Financieel` enum('0','1') DEFAULT NULL,
  23. `HR` enum('0','1') DEFAULT NULL,
  24. `Techniek` enum('0','1') DEFAULT NULL,
  25. `Zorg` enum('0','1') DEFAULT NULL,
  26. `Leidinggevend` enum('0','1') DEFAULT NULL,
  27. `Ondernemend` enum('0','1') DEFAULT NULL,
  28. `Analyserend` enum('0','1') DEFAULT NULL,
  29. `Besluitvaardig` enum('0','1') DEFAULT NULL,
  30. `Communicatief` enum('0','1') DEFAULT NULL,
  31. `Flexibel` enum('0','1') DEFAULT NULL,
  32. `Initiatiefrijk` enum('0','1') DEFAULT NULL,
  33. `Kwantiteit` enum('0','1') DEFAULT NULL,
  34. `Kwaliteit` enum('0','1') DEFAULT NULL,
  35. `CV` varchar(255) NOT NULL DEFAULT '',
  36. `Aanmelddatum` datetime DEFAULT NULL,
  37. `Afmelddatum` datetime DEFAULT NULL,
  38. `cv_weergeven` enum('0','1') DEFAULT NULL,
  39. `Herinnering` enum('0','1') DEFAULT NULL,
  40. PRIMARY KEY (`ID`)
  41. ) TYPE=MyISAM AUTO_INCREMENT=98 ;
Offline marten - 22/01/2008 11:08
Avatar van marten Beheerder
  1. SELECT DATE_SUB(Afmelddatum, INTERVAL 14 DAY) AS maildatum, DATE_FORMAT(Afmelddatum, '%d-%m-%Y') AS datum, DATE_FORMAT(Aanmelddatum, '%d-%m-%Y') AS newdatum FROM kandidaten WHERE cv_weergeven = '1' AND FLOOR(unix_timestamp(`Aanmelddatum`) - unix_timestamp(NOW()) / 86400) >= 30 ORDER BY ID DESC


Probeer deze eens. Ik heb de floor gewoon rechtstreeks in de where clause gezet. Ik krijg nu geen foutmeldingen terug.
Offline mike87 - 22/01/2008 11:26
Avatar van mike87 Nieuw lid Ah, super bedankt!
Hij doet het.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s