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, 4340 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel Online Datum (10)

Frage von MegaGiga zum Thema Microsoft Office ...

Windows Tools
Reg Auswertung mit Powershell (1)

Frage von Bommi1961 zum Thema Windows Tools ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
CMS
Lokales Wordpress im LAN - wie aufsetzen? (16)

Frage von Static zum Thema CMS ...

LAN, WAN, Wireless
gelöst Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (16)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
IP im privaten Netz nicht erreichbar (14)

Frage von guntis zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

Frage von IceAge zum Thema LAN, WAN, Wireless ...