Likes Likes:  0
Resultaten 1 tot 15 van de 15
Geen
  1. #1
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter

    MySQL data weergeven tussen 2 datums?

    Allereerst de beste wensen voor 2011

    Ik ben al een tijdje aan het stoeien om data tussen 2 datums weer te laten geven in een tabel.
    De bedoeling is dat bij het opvragen de pagina wordt weer gegeven met alle data tot 7 dagen terug.
    De datum in mysql wordt opgeslagen in datum varchar, helaas is dat zo en dat kan niet veranderd worden omdat er al data in staat.
    PHP Code:
    $today = date("d-m-Y");
    $pf_time = strtotime("-7 days"); 
    $pf_date = date("d-m-Y", $pf_time); ($result_date);

    // echo $pf_date; geeft huidige datum -7 dagen weer

    $result = mysql_query("SELECT * FROM verhaaltjes WHERE (datum BETWEEN '$today' AND '$pf_date')  ORDER BY `id` DESC, `tijd` DESC") or die(mysql_error()); 
    Als ik de pagina opvraag dan laat die de datums zien van 7 dagen terug tot het eind.
    Nu laat die zien van 22-12-2010 t/m 10-10-2010, maar hij moet bij de hoogste datum beginnen van 29-12-2010 t/m 22-12-2010
    29-12-2010
    28-12-2010
    27-12-2010
    26-12-2010
    25-12-2010
    24-12-2010
    23-12-2010
    22-12-2010
    21-12-2010
    20-12-2010
    19-12-2010
    ...............
    10-10-2010

    Hopelijk begrijpt iemand wat het probleem is en weet een oplossing?

  2. #2
    MySQL data weergeven tussen 2 datums?
    bakkerl
    137 Berichten
    Ingeschreven
    24/07/09

    Locatie
    Utrecht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Als eerste is je date formaat onjuist die gebruikt.
    The MySQL date format is actually YYYY-MM-DD
    Daarnaast, waarom het in php doen, als het ook in sql kan.
    Code:
    SELECT * FROM verhaaltjes WHERE (datum BETWEEN CURDATE()-INTERVAL 7 DAY AND CURDATE())  ORDER BY `id` DESC, `tijd` DESC
    En als laatste, de BETWEEN volgorde maakt ook nog uit.
    Code:
    SELECT 8 BETWEEN 1 AND 10
    geeft een ander antwoord dan
    Code:
    SELECT 8 BETWEEN 10 AND 1
    Laatst gewijzigd door lmp; 03/01/11 om 09:59.

  3. #3
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Citaat Oorspronkelijk geplaatst door lmp Bekijk Berichten
    Als eerste is je date formaat onjuist die gebruikt.
    Dit heb ik geschreven, de datum staat als datum varchar en wordt weg geschreven als dd-mm-yyyy in datum - date("d-m-Y");

    Dus jou antwoord werkt niet in mijn geval..

  4. #4
    MySQL data weergeven tussen 2 datums?
    bakkerl
    137 Berichten
    Ingeschreven
    24/07/09

    Locatie
    Utrecht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Citaat Oorspronkelijk geplaatst door Herbert Bekijk Berichten
    Dit heb ik geschreven, de datum staat als datum varchar en wordt weg geschreven als dd-mm-yyyy in datum - date("d-m-Y");
    *mompel iets met slecht database design....

    Code:
    SELECT * FROM verhaaltjes WHERE (STR_TO_DATE(datum, '%d-%m-%Y') BETWEEN CURDATE()-INTERVAL 7 DAY AND CURDATE())  ORDER BY `id` DESC, tijd` DESC
    Vreet wel flink wat extra resources, bij elke query moet die alle datum velden omzetten voordat die de between kan gaan doen.. maarja, het zijn jou performance, gooi er maar wat extra CPU/geheugen tegenaan, daarom ook die *mompel*..

  5. #5
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Citaat Oorspronkelijk geplaatst door lmp Bekijk Berichten
    *mompel*..
    Ik ben ook aan het mompelen.. het is voor een klant van mij en het moet in een bestaand script.
    De laatste oplossing werkte ook niet, hij laat alle data zien.. ook ouder dan 7 dagen.

    Is er een snelle manier om datum varchar en tijd varchar om te zetten naar DATETIME in mysql?
    De datum staat als 31-12-2010 en de tijd 23:23, het zijn 2 aparte velden.

  6. #6
    MySQL data weergeven tussen 2 datums?
    geregistreerd gebruiker
    2.483 Berichten
    Ingeschreven
    03/09/08

    Locatie
    Maasbracht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    32 Berichten zijn liked


    Bedrijf: Piwi-Web
    Functie: Eigenaar
    URL: www.piwi-web.com
    KvK nummer: 14097251

    Citaat Oorspronkelijk geplaatst door Herbert Bekijk Berichten
    Ik ben ook aan het mompelen.. het is voor een klant van mij en het moet in een bestaand script.
    De laatste oplossing werkte ook niet, hij laat alle data zien.. ook ouder dan 7 dagen.

    Is er een snelle manier om datum varchar en tijd varchar om te zetten naar DATETIME in mysql?
    De datum staat als 31-12-2010 en de tijd 23:23, het zijn 2 aparte velden.
    Waarom zet je de velden niet om? Je hebt er wat PHP werk voor nodig maar dan lijkt het mij toch wel mogelijk te zijn om de VARCHAR velden om te zetten naar DATE en TIME ?
    Heb het zelf nog nooit hoeven doen, maar theoretisch gezien zou je de datums er opnieuw in kunnen zitten in de juiste 'vorm'.
    Piwi-Web IT Solutions - Website - E-mail

  7. #7
    MySQL data weergeven tussen 2 datums?
    bakkerl
    137 Berichten
    Ingeschreven
    24/07/09

    Locatie
    Utrecht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Citaat Oorspronkelijk geplaatst door Herbert Bekijk Berichten
    Ik ben ook aan het mompelen.. het is voor een klant van mij en het moet in een bestaand script.
    De laatste oplossing werkte ook niet, hij laat alle data zien.. ook ouder dan 7 dagen.
    Dan heb je ergens een andere fuckup in je systeem..

    mijn testdata:
    Code:
    CREATE TABLE IF NOT EXISTS `verhaaltjes` (
      `id` int(11) NOT NULL,
      `a` varchar(10) NOT NULL,
      `datum` varchar(40) NOT NULL,
      `tijd` int(11) NOT NULL default '0'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    -- Dumping data for table `verhaaltjes`
    INSERT INTO `verhaaltjes` (`id`, `a`, `datum`, `tijd`) VALUES
    (1, '1', '04-01-2011', 0),
    (2, '2', '01-01-2011', 0),
    (3, '3', '10-10-2010', 0),
    (4, '4', '22-12-2010', 0);
    En dan mijn query, aangepast met een ' voor tijd (omdat die daar miste).
    Code:
    mysql> SELECT * FROM verhaaltjes WHERE (STR_TO_DATE(datum, '%d-%m-%Y') BETWEEN CURDATE()-INTERVAL 7 DAY AND CURDATE())  ORDER BY `id` DESC, `tijd` DESC;
    +----+---+------------+------+
    | id | a | datum      | tijd |
    +----+---+------------+------+
    |  2 | 2 | 01-01-2011 |    0 |
    +----+---+------------+------+
    1 row in set (0.00 sec)
    
    mysql> SELECT CURDATE();
    +------------+
    | CURDATE()  |
    +------------+
    | 2011-01-03 |
    +------------+
    1 row in set (0.00 sec)
    Meer en minder kan ik er niet van maken...


    Citaat Oorspronkelijk geplaatst door Herbert Bekijk Berichten
    Is er een snelle manier om datum varchar en tijd varchar om te zetten naar DATETIME in mysql?
    De datum staat als 31-12-2010 en de tijd 23:23, het zijn 2 aparte velden.
    Code:
    SELECT STR_TO_DATE(CONCAT('31-12-2010',' ','23:23'), '%d-%m-%Y %H:%i')
    Laatst gewijzigd door lmp; 03/01/11 om 11:34. Reden: Added select SELECT CURDATE() voor als post in de toekomst wordt bekeken!

  8. #8
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Bedankt voor de antwoorden..
    Ik ga hem omzetten naar DATETIME want in VARCHAR werkt het voor geen meter.
    Als er iemand een script heeft om het veld "datum" en "tijd" naar DATETIME "datumtijd" te converteren dan hou ik mij aanbevolen.
    DATETIME is nu 2011-01-03 13:23:00

  9. #9
    MySQL data weergeven tussen 2 datums?
    geregistreerd gebruiker
    2.483 Berichten
    Ingeschreven
    03/09/08

    Locatie
    Maasbracht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    32 Berichten zijn liked


    Bedrijf: Piwi-Web
    Functie: Eigenaar
    URL: www.piwi-web.com
    KvK nummer: 14097251

    Piwi-Web IT Solutions - Website - E-mail

  10. #10
    MySQL data weergeven tussen 2 datums?
    geregistreerd gebruiker
    189 Berichten
    Ingeschreven
    30/11/07

    Locatie
    Noordwijk

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    6 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Heren, het gebruik van de functie CURDATE() in select queries schakelt de query cache functie van MYSQL uit. Juist voor queries zoals deze in de query cache bijzonder nuttig, dus deze uitschakelen lijkt me onwenselijk.
    Oplossing: vraag de huidige datum op in PHP en geef deze mee als string in de Query.

  11. #11
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Citaat Oorspronkelijk geplaatst door davhog Bekijk Berichten
    Oplossing: vraag de huidige datum op in PHP en geef deze mee als string in de Query.
    Heb je ook een voorbeeld dan?
    Zoals ik al schreef staan de datum en tijd in een varchar, de datum via php meegeven in de query werkt niet.
    Wat wel werkt is:
    PHP Code:
    $today = date("d-m-Y");
    $result = mysql_query("SELECT * FROM verhaaltjes WHERE datum = '$today' order by id DESC") or die(mysql_error()); 
    Hij laat dan alleen de inhoud van vandaag zien, zodra he BETWEEN e.d. gaat gebruiken klopt er niets meer van.

  12. #12
    MySQL data weergeven tussen 2 datums?
    moderator
    6.052 Berichten
    Ingeschreven
    21/05/03

    Locatie
    NPT - BELGIUM

    Post Thanks / Like
    Mentioned
    40 Post(s)
    Tagged
    0 Thread(s)
    481 Berichten zijn liked


    Naam: Dennis de Houx
    Bedrijf: All In One
    Functie: Zaakvoerder
    URL: www.all-in-one.be
    Ondernemingsnummer: 0867670047

    Citaat Oorspronkelijk geplaatst door Herbert Bekijk Berichten
    Heb je ook een voorbeeld dan?
    Zoals ik al schreef staan de datum en tijd in een varchar, de datum via php meegeven in de query werkt niet.
    Wat wel werkt is:
    PHP Code:
    $today = date("d-m-Y");
    $result = mysql_query("SELECT * FROM verhaaltjes WHERE datum = '$today' order by id DESC") or die(mysql_error()); 
    Hij laat dan alleen de inhoud van vandaag zien, zodra he BETWEEN e.d. gaat gebruiken klopt er niets meer van.
    Je zou eens kunnen proberen met < en > in de zin van FROM verhaaltjes WHERE datum > '$start' ....
    Trouwens geen idee of het werkt maar het is maar een voorstel om je op weg te helpen.
    Dennis de Houx - All In One ~ Official ISPsystem partner

    Lees hier de webhostingtalk.nl forum regels en voorwaarden!

  13. #13
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Citaat Oorspronkelijk geplaatst door The-BosS Bekijk Berichten
    Je zou eens kunnen proberen met < en > in de zin van FROM verhaaltjes WHERE datum > '$start' ....
    Trouwens geen idee of het werkt maar het is maar een voorstel om je op weg te helpen.
    Nee dat werkt niet, dat had ik al getest..
    Ik zou met CURDATE(); kunnen werken op de VARCHAR datum tijd, maar dan moet ik CURDATE(); omzetten naar 31-12-2010 omdat CURDATE(); standaard 2010-31-12 uitleest.
    Alleen hier kan ik ook geen werkend voorbeeld van vinden.

  14. #14
    MySQL data weergeven tussen 2 datums?
    geregistreerd gebruiker
    189 Berichten
    Ingeschreven
    30/11/07

    Locatie
    Noordwijk

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    6 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Dit zou moeten werken op een datumveld en ook op een Datum veld of VARCHAR VELD waarvan de datumnotatie Y-m-d is en er gewerkt wordt met voorloop nullen voor dagen en maanden < 10. Een nederlandse notatie is niet te sorteren en dus ook niet te filteren met < >

    Zoiets:

    WHERE datum >='$start_datum' AND datum<='$eind_datum'

  15. #15
    MySQL data weergeven tussen 2 datums?
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Thread Starter
    Na lang puzzelen ben ik eruit, deze doet het.
    PHP Code:
    // als er niets komt van de select form dan is $dagenterug 0 en wordt CURDATE()-INTERVAL 7
    if ($dagenterug == 0 ) { $dagenterug = "7"; } else 
    $dagenterug = $dagenterug; // beetje krom maar anders krijg ik geen goede var mee
    $result = mysql_query("SELECT * FROM verhaaltjes WHERE (STR_TO_DATE(datum, '%d-%m-%Y') BETWEEN CURDATE()-INTERVAL $dagenterug DAY AND CURDATE()) ORDER BY `id` DESC") or die(mysql_error()); 
    Ik kan per dag selecteren en met een select ook nog een xx aantal dagen terug tot nu.
    De tijd en datum staan in VARCHAR en ik heb dit niet om hoeven te zetten.
    Ik wil iedereen bedanken voor de antwoorden!

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics