Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten nach Tagen anhand von Timestamp gruppieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten nach Tagen anhand von Timestamp gruppieren

    Moin Moin,

    ich habe eine Tabelle die so aussieht:

    PHP-Code:
    Name Timestamp
    Orange 
    1234567890
    Apfel 
    1234567390
    Orange 
    1234563490
    Birne 
    1234558390
    Orange 
    1232347890 
    Nun möchte ich mit einer SQL Abfrage eine solche Tabelle erzeugen:

    PHP-Code:
    Tag Anzahl
    1.12.2014 
    123
    2.12.2014 
    126
    3.12.2014 
    111
    4.12.2014 
    132 
    Das erste Feld besteht aus den letzten 30 Tagen aufsteigend sortiert, das zweite Feld ist die Anzahl der an diesen Tagen eingetragenen Datensätze.

    Mein bisheriger Versuch:

    PHP-Code:
    SELECT COUNT(Name) AS `anzahl`, DATE_FORMAT(FROM_UNIXTIME('Timestamp'), '%W')  AS `Tag`, 
    FROM `Tabelle`
    GROUP BY DATE_FORMAT(FROM_UNIXTIME('Timestamp'), '%W'
    ORDER BY `TagDESC
    LIMIT 30 
    Über Hilfe oder Lösungsmöglichkeiten bedanke ich mich im voraus!


  • #2
    Zitat von select Beitrag anzeigen
    Mein bisheriger Versuch:
    Der was ergibt?

    SELECT COUNT(Name) AS `anzahl`, DATE_FORMAT(FROM_UNIXTIME('Timestamp'), '%W') AS `Tag`,
    Was soll die Funktion FROM_UNIXTIME aus dem String 'Timestamp' machen? Meinst du nicht es wäre sinnvoller sie mit der Spalte Timestamp arbeiten zu lassen? Und gleich noch ein richtiges Datenformat (DATETIME) zu verwenden ist auch nie falsch ...

    Kommentar


    • #3
      also wenn du einen timestamp in der DB haben möchtest (find ich persönlich eigentlich immer ganz nützlich) würde den einfach so auslesen und dann in php weiter verarbeiten. Es gibt da so viele tolle Funktionen um die Zeit entsprechend zu formatieren und man kann es sogar internationaliseren
      Fatal Error: Windows wird gestartet

      Wie administriert man ein Netzwerk: Beispiel

      Kommentar


      • #4
        Zitat von Unlikus Beitrag anzeigen
        also wenn du einen timestamp in der DB haben möchtest (find ich persönlich eigentlich immer ganz nützlich) würde den einfach so auslesen und dann in php weiter verarbeiten. Es gibt da so viele tolle Funktionen um die Zeit entsprechend zu formatieren und man kann es sogar internationaliseren
        Es ist ja nicht so dass die Datenbank das nicht auch könnte … Außerdem ist der Sinn der Übung ja in dem Fall die Anzahl der Datensätze pro Tag zu ermitteln (ja, mit PHP ginge das auch, ist aber recht umständlich).

        Kommentar


        • #5
          naja man kann ja einfach den ersten Unix Timestamp und den letzen Timestamp des Tages bestimmten und dann einfach BETWEEN benutzen, geht bestimmt auch schneller.
          Fatal Error: Windows wird gestartet

          Wie administriert man ein Netzwerk: Beispiel

          Kommentar


          • #6
            Zitat von Unlikus Beitrag anzeigen
            naja man kann ja einfach den ersten Unix Timestamp und den letzen Timestamp des Tages bestimmten und dann einfach BETWEEN benutzen, geht bestimmt auch schneller.
            Nein. Die Herangehensweise im Ursprungsposting ist schon richtig (bis auf die Tatsache dass der Spaltenname als String notiert ist eben). Wenn du mit BETWEEN arbeiten wolltest müsstest du erst ermitteln welche Tage vorhanden sind, dann zu jedem Tag Anfangs- und Endtimestamp bestimmen und dann damit die Datensätze holen - da wäre es ja noch sinnvoller das mit PHP auszuwerten ...

            Kommentar


            • #7
              ja stimmt hast recht. Bleiben nur eventuelle Probleme mit Zeitzonen
              Fatal Error: Windows wird gestartet

              Wie administriert man ein Netzwerk: Beispiel

              Kommentar


              • #8
                Zitat von Unlikus Beitrag anzeigen
                ja stimmt hast recht. Bleiben nur eventuelle Probleme mit Zeitzonen
                Nein. Nicht in funktionierenden Datenbanken.
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #9
                  Zitat von Unlikus Beitrag anzeigen
                  Bleiben nur eventuelle Probleme mit Zeitzonen
                  Und die wären? Eigentlich muss man sich schon anstellen das Zeitzonen zum Problem werden...

                  Kommentar


                  • #10
                    Naja ich programmiere International und da gibt es mehr als eine Zeitzone. Und viele dieser Zeit Funktionen können das teilweise nicht ganz richtig.
                    Fatal Error: Windows wird gestartet

                    Wie administriert man ein Netzwerk: Beispiel

                    Kommentar


                    • #11
                      Zitat von Unlikus Beitrag anzeigen
                      Naja ich programmiere International und da gibt es mehr als eine Zeitzone. Und viele dieser Zeit Funktionen können das teilweise nicht ganz richtig.
                      Welche der hier genannten Funktionen meinst Du, und was genau machen diese falsch?

                      http://www.postgresql.org/docs/9.4/i...-datetime.html

                      Also, Butter bei die Fische, wenn Du da Bugs kennst, nur her damit, damit das gefixt werden kann.
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        ja du hast wahrscheinlich recht mit postgre, also mysql kann die Zeitzone später nicht mehr verändern
                        Kenn mich mit PG aber nicht so aus, geht das da?
                        Fatal Error: Windows wird gestartet

                        Wie administriert man ein Netzwerk: Beispiel

                        Kommentar


                        • #13
                          Zitat von Unlikus Beitrag anzeigen
                          ja du hast wahrscheinlich recht mit postgre, also mysql kann die Zeitzone später nicht mehr verändern
                          Kenn mich mit PG aber nicht so aus, geht das da?
                          Was genau willst Du wissen?

                          Code:
                          test=*# select now();
                                        now
                          -------------------------------
                           2015-01-06 09:43:19.443148+01
                          (1 row)
                          
                          Time: 0,238 ms
                          test=*# select now() at time zone 'Europe/Berlin';
                                    timezone
                          ----------------------------
                           2015-01-06 09:43:19.443148
                          (1 row)
                          
                          Time: 0,200 ms
                          test=*# select now() at time zone 'Canada/Central';
                                    timezone
                          ----------------------------
                           2015-01-06 02:43:19.443148
                          (1 row)
                          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                          Kommentar


                          • #14
                            ja gut hast mich überzeugt, ich werde mich mal ernsthaft mit Postgre beschäftigen
                            Fatal Error: Windows wird gestartet

                            Wie administriert man ein Netzwerk: Beispiel

                            Kommentar


                            • #15
                              Zitat von Unlikus Beitrag anzeigen
                              ja gut hast mich überzeugt, ich werde mich mal ernsthaft mit Postgre beschäftigen
                              Nur zur Warnung: Du wirst sehr schnell MySQL nicht mehr sehen wollen

                              Fang mit 9.4 an, schon allein wegen JSONB. Bei Fragen einfach fragen, hier oder im pg-forum.
                              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                              Kommentar

                              Lädt...
                              X