Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Monatlich Auswertung der letzten 2 Jahre ab heutigem Datum

Frage Entwicklung PHP

Mitglied: 104128

104128 (Level 1)

09.05.2012, aktualisiert 11:23 Uhr, 4237 Aufrufe, 5 Kommentare

Folgendes habe ich vor:

Es liegt eine Datenbank vor mit einem Datumsfeld im Format "YYYY-MM-DD" welches ich auch nicht beeinflussen kann. Ich möchte nun eine automatisierte Auswertung tätigen, bei dem ab heute 2 Jahre zurück gerechnet wird und mir die Zahlen Monatsweise ausgegeben werden.
Als Beispiel:

Ich möchte den Zeitraum 09.05.2010 - 09.05.2012 auswerten. Die Daten aus der Datenbank auslesen ist nicht das Problem - das Problem besteht in der zeitlichen Berechnung.

Die Queries an die MySQL würden lauten:

"SELECT * FROM daten WHERE datum BETWEEN "2010-01-01" AND "2010-01-31"
"SELECT * FROM daten WHERE datum BETWEEN "2010-02-01" AND "2010-02-28"
"SELECT * FROM daten WHERE datum BETWEEN "2010-03-01" AND "2010-02-31"
...

Alternativ könnte ich auch alle Daten der letzten 2 Jahre in ein Array lesen:
"SELECT * FROM daten WHERE datum BETWEEN "2010-01-01" AND "2012-05-09"

nur wie bekomme ich dann immer die einzelnen Monate aus dem Array?

Die Ausgabe sollte dann als Tabelle erfolgen (nachfolgend Beispielspalten):

ID | Jan 10 | Feb 10 | Mrz 10 | April 10 | ... | Mrz 12 | Apr 12 | Mai 12


Hat jemand einen Lösungsansatz für mich?? ;-D


### EDIT ###
Die Datensätze sind nach Tagen gespeichert. Es gibt also z. B. mehrere Datensätze mit "2011-05-05" oder ähnlichem.
Mitglied: napperman
09.05.2012 um 11:36 Uhr
Hallo.

WHERE Datum BETWEEN (year(getdate()-2) AND getdate()
Sollte schonmal das Ergebnis liefern.
Bitte warten ..
Mitglied: 104128
09.05.2012 um 11:57 Uhr
Ich sag ja: Die Daten Datumsmäßig aus der DB bekommen ist nicht das Problem.

Wie aber kann ich, wenn alle Daten in einem Array sind, die einzelnen Monate heraus bekommen?

Mein Array würde so aussehen:

ID -> Datum -> Menge
1 -> 2011-05-05 -> 3
2 -> 2011-05-05 -> 4
3 -> 2011-05-06 -> 1
4 -> 2011-07-15 -> 3

Jetzt möchte ich alle Mengen des Monats 05 zusammenfassen. Alle des Monats 06, alle des Monats 07,...
Bitte warten ..
Mitglied: amax2000
09.05.2012 um 13:07 Uhr
Hi thebrains,

datepart(Datum, mm), datepart(datum,yyyy) dürfte schon beim select dein Freund sein und dann noch SUM(Menge)...hier evtl. noch mit ISNULL transformieren

Hoffe ich zumindest

Grüße,


amax
Bitte warten ..
Mitglied: 104128
09.05.2012 um 15:07 Uhr
Habs jetzt wie folgt gelöst:

1) Aktuelles Datum - 2 Jahre
2) Schleife für die Jahre
2.1) Schleife für die Monate
2.2) Addierung der Mengen für Monat.Jahr
3) Eintragung in eine Tabelle "Zusammenfassung" für jeden einzelnen Monat.Jahr

Der zweite Schritt:

1) Aktuelles Datum - 2 Jahre
2) SELECT an die DB um die Daten der letzten 2 Jahre auslesen
-> diese sind bereits Monatsweise gespeichert
3) Speicherung in 2 Arrays (Mengen und Zeit)
4) Ausgabe als Liniendiagramm

Ich muss dazu sagen, dass es um über 9 Mio Datenbankeinträge geht. Eine Aktualisierung der Daten findet jede Nacht statt, da täglich neue Daten hinzukommen.
Gerade läuft mein Script für die Zusammenfassung. Der lief heut moin schon einmal und hatte über 45 Minuten benötigt. Allerdings ist die Performance nach der Zusammenfassung wesentlich schneller beim Abruf der Monatsdaten als vorher die Summierung der einzelnenen Tage zu Monaten + anschließender Ausgabe.

Trotzdem danke für die Denkanstöße, hat mir auf jeden Fall geholfen

lg, Marc
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel Makro - Button "Springe zu Zeile mit heutigem Datum" (5)

Frage von hannsgmaulwurf zum Thema Microsoft Office ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Windows 10
Brauche Hilfe bei BlueScreen Auswertung! (10)

Frage von SgtBurner zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Empfehlung günstiges ADSL2+ nur Modem (10)

Frage von TimMayer zum Thema Router & Routing ...