Tabellen automatisch nach Datum erstellen

Hallo alle miteinandern,

für einen Kunden habe ich ein Kontaktformular eingerichtet, dessen Ergebnisse automatisch in einer MySQL-Datenbank in der Tabelle „form_results“ gespeichert werden.
Der Kunde wünscht jedoch, dass jeden Tag automatisch eine neue Tabelle mit dem aktuellen Datum erstellt wird und Kontaktanfragen des jeweiligen Tages in diese Tabelle wandern. Habt ihr eine Idee, wie ich diesen Wunsch umsetzen kann?

Des Weiteren habe ich noch eine kleine Frage: Wenn jemand im Kontaktformular beispielsweise als Wohnort Köln eingibt, dann steht dieses „Köln“ in der Tabelle als „Köln“. Wie kann ich dieses unschöne Ergebnis vermeiden?

Ich bedanke mich im Vorfeld für eure Antworten.

Du kannst mit jedem Datensatz die MySQL-Funktion UNIX_TIMESTAMP() auführen und das ergebenis in der DB mitspeichern. Dann kannst du diesen Timestamp wieder aus der Db auslesen.

Einzelheiten findest du dazu in der MySQL Anleitung bzw. Google.

Und du solltest MySQL auf Unicode stellen, dann solltest du auch keine probleme mehr mit den Umlauten haben.

Grüße,

Alexander

Also das Datum sowie die Uhrzeit wird in der Tabelle sowieso gespeichert. Jedoch hätte ich gerne, dass die tabelle automatisch das jeweilige Datum als Namen bekommt, so dass ich in der Datenbank für jeden tag eine extra tabelle habe.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Und du solltest MySQL auf Unicode stellen, dann solltest du
auch keine probleme mehr mit den Umlauten haben.

meinst du damit, dass ich die Kollation der Tabelle auf utf8_unicode_ci umstelle? das hat nämlich leider nicht geklappt

Also das Datum sowie die Uhrzeit wird in der Tabelle sowieso
gespeichert. Jedoch hätte ich gerne, dass die tabelle
automatisch das jeweilige Datum als Namen bekommt, so dass ich
in der Datenbank für jeden tag eine extra tabelle habe.

Mh… Aber das ist doch leicht irrsinnig?!? Ob du nun eingeben musst

SELECT col FROM table\_mit\_datum WHERE 1;

oder

SELECT col FROM table WHERE datum \> x AND datum 

ist doch völlig egal. Auf deine Weise hast du eine Datenbank, die ihre Struktur verändert. Du musst in dein Programm routinen einbauen, die verhindern, dass auf eine Tabelle zugegriffen, die nicht existiert etc.

Mit der zweiten Abfrage zeigt er dir doch schon alle Datensätze zwischen x und y an (zB 01.01.2001 0:00 bis 01.01.2001 24:00). Damit hast du ganz easy die richtigen daten und findest diese auch immer an der selben Stelle.

Und wenn du dann doch mal eine Zusammenfassung über einen längeren Zeitraum brauchst, musst du nicht erst 365 Tabellen aneinanderfügen.

Glaube mir... Lass alle Daten in der einen Tabelle!

Wenn du dennoch für jeden Tag eine Tabelle haben willst, dann musst du das mit einem Programm lösen, dass abfragt, ob eine Tabelle für heute schon existiert und entsprechend ein CREATE TABLE Kommando absetzen.

Konstrukte wie CREATE TABLE TODAY() oder so ähnlich unterstützt MySQL mit an Sicherheit grenzender Wahrscheinlichkeit nicht, da man Rückgabewerte von MySQL-Funktionen nicht als Tabellennamen verwenden kann.

Grüße,

Alexander

Hi!

Der Kunde wünscht jedoch, dass jeden Tag automatisch eine neue
Tabelle mit dem aktuellen Datum erstellt wird und
Kontaktanfragen des jeweiligen Tages in diese Tabelle wandern.
Habt ihr eine Idee, wie ich diesen Wunsch umsetzen kann?

Gibt’s in mySql den Begriff „dynamisches SQL“? Zumindest unter Oracle hab ich sowas mal gemacht (damals aber _nur_ Jahresweise, wobei das Prinzip dasselbe ist)

Grüße,
Tomh

Hallo alle miteinandern,

Hallo du einer,

wie alle Vorredner schon betonten: „lass es besser“. Wenn es nur darum geht, die Tabelle nicht ins Uferlose wachsen zu lassen, würde sich u.U. eine Partitionierung der Tabelle nach dem Datumsattribut anbieten. Da hast du beide Vorteile (Aufteilung der Daten in ‚handliche‘ Portionen und die Möglichkeit, auf alle Daten unter einem gemeinsamen, fixen Namen zuzugreifen) in einer Lösung.

Gruss
bernhard