Willkommen bei Entwickler-Forum.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard select week("2018-01-06") - Fehler in MySQL?

    Hallo,

    Der MySQL Befehl select week("2018-01-06") liefert als Ergebnis 0. Ich habe mal ein paar Tage aus 2018 überprüft, immer erhalte ich ein um 1 zu niedriges Ergebnis. In 2019 scheint sich das Spiel fortzusetzen. Ist das Problem bekannt, gibt es eine Abhilfe?

    Danke - Günther
    Günther

  2. #2

  3. #3
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard

    Der Mode-Parameter definiert doch nur, an welchem Wochentag die Woche beginnt. Sonntag oder Montag ist in unserem Fall vollkommen irrelevant.
    Das Problem lässt sich bei jedem beliebigen Tag in 2018 nachvollziehen. Für die Folgejahre hab ich keinen Kalender zum Vergleich. Und 2017 funktioniert einwandfrei.

    PHP-Code (von Falk Prüfer):
    Code:
        public static function getDataOrder($pKID, &$pResultRecord)
        {
            $db = appDB::getInstance();
    
            return $db->select(
                'SELECT `No`, Bezeichnung, Anzahl, WEEK(`Date`) as w, YEAR(`Date`) as j
                    FROM navek
                    WHERE No = ?
                    ORDER BY `Date`',
                $pResultRecord, [
                    $db->createParam((string) $pKID),
                ],
                appDB::STMT_OPTION_PERSISTENT
            );
        }
    und dann etwas später in einer anderen Datei:
    Code:
                <?php if ($this->resultTabelle->w == 0) : ?>
                <td class="count"><?php echo appLang::_('t_offen'); ?></td>
                <?php else : ?>
                <td class="date"><?php echo appOutput::htmlentities($this->resultTabelle->w); ?>&nbsp;/&nbsp;<?php echo appOutput::htmlentities($this->resultTabelle->j); ?></td>
                <?php endif; ?>
    Ok, ich könnte jetzt eine Abfrage einbauen ob das Jahr größer 2017 ist und dann bei w einfach 1 hinzu addieren. Aber das sehe ich als Notbehelf.
    Günther

  4. #4
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.262

    Standard

    hmmmm, es steuert auch den Range der Rückgabe

    The two-argument form of WEEK() enables you to specify whether the week starts on Sunday or Monday and whether the return value should be in the range from 0 to 53 or from 1 to 53.


    Christian

  5. #5
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard

    Ok, hab ich auch dann gelesen. Aber wie erfahre ich welchen Mode ich angeben muß, und wie baue ich das in die MySQL Abfrage ein?
    Entschuldigung, die eigentliche mySQL Abfrage ist nicht von Falk, die wurde von uns vorgegeben.
    Günther

  6. #6

  7. #7
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.829

    Standard

    Welche Definition von Kalenderwoche willst du den genau
    Unsere übliche ISO-Woche entspricht Mode 3.

    Anstatt
    WEEK(`Date`)
    also eher
    WEEK(`Date`, 3)

  8. #8
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard

    Also einfach nur weekofyear statt week.

    Super. Danke für die schnelle Hilfe.
    Günther

  9. #9
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard

    @Ralf,ob die Woche mit Sonntag oder Montag beginnt ist irrelevant. Wir haben keine Sonntage in der Datenbank.
    Günther

  10. #10
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Hattingen
    Beiträge
    1.372

    Standard

    ok, ich nehme dann WEEK(`Date`, 3)
    Günther

 

 
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •