3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
989
989
EMPFEHLEN
-
Hallo,
ich möchte in eine MySQL-DB (version 4.1.x ) eine Tabelle, anlegen. Die ursprungliche Tabelle in EXCEL sieht wie folgt aus:
Datum Uhrzeit Parameter Messwert
Ich möchte später in der Tabelle die Datensätze nach Jahr, Monat, Tag und Uhrzeit selectieren.
Ich hätte 3 zwei Alternativen das Datum und die Uhrzeit in der Tabelle anzulegen.
Der erste wäre: Datum ( typ: DATE ), Uhrzeit ( typ: TIME )
Der zweite wäre: Datum und Uhrzeit ( typ: DATETIME )
Der dritte wäre: Jahr( typ:smallint), Monat( typ: smallint ), Tag( typ:smallint ), Uhrzeit ( typ: smallint ) hier nur immer auf volle Stunde berechnet(z.B. 12, 13 etc.).
Jetzt kommt endlich die Frage. Kann man mann in der ersten und zweiten Variante nach Datum, Monat, Tag und Uhrzeit selectieren?
ZB. select messwert from Tabelle where jahr=2001 and monat=12 and tag=31
Kann jemand mir erfahrungsgemäß sagen, ob die ersten und zweite Varianten vorteilhafter sind als die dritte Variante. Die Variante kommt mir einfacher.
danke vorausGeändert von sharmuur (30.04.10 um 10:15 Uhr)
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
aus Versehen abgeschickt

jetzt is die Frage da
-
Die 2te Variante macht in meinen Augen am meisten Sinn. Warum als INT speichern, wenns dafür ein passendes Format gibt.
Mit den Datums- und Zeitfunktionen kannst du nachher mehr oder weniger bequem darauf zugreiffen
Mit dem DATETIME-Typ kannst du nachher auch problemlos rechnen (Letzter Tag des Monats, 30 Tage addieren etc)
oderCode sql:1 2 3 4 5 6
SELECT * FROM myTable WHERE YEAR(myDateField) = 2010 AND MONTH(myDateField) = 4 AND DAY(myDateField) = 30;
Code sql:1 2 3
SELECT * FROM myTable WHERE DATE(myDateField) = STR_TO_DATE('30.04.2010', '%d.%m.%Y');
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo Yaslow,
danke für die wertvolle Tipps. Jetzt kann ich zweifelfrei meine DB anlegen.
Gruß
-
Hätte noch eine Frage. Das Datum in der EXCEL-Tabell liegt im folgenden Format vor: 31.12.2001.
Ich habe gerade auf der Webseite http://dev.mysql.com/doc/refman/5.1/...ime-types.html gelesen, dass man das datum nur in der Reihenfolge 2001.12.31 speichern kann und dass das Trennzeichen "-" sein sollte.
Gibt es keine Möglichkeiten ausser dieser?
Da ich mindestens 8 millionen Datensätze in dem Format habe, wird es mir sehr viel Zeit kosten wenn ich die Positionen von jahr und tag wechsele. Gibt es irgendwelche tricks?
Gruß
-
Du erstellt aus dem Excel eine Temporäre Tabelle in der Datenbank. Das Datumsfeld definierst du da als Varchar.
Dann machst du ein INSERT-Query zur Zieldatenbank mit allen notwendigen Konvertierungen
Code sql:1 2 3 4 5 6 7 8
INSERT INTO myTable (id, datum, bezeichnung) SELECT id, STR_TO_DATE(datum, '%d.%m.%Y'), bezeichnung FROM tempMyTable;
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
danke danke,
ich teste es gleich
-
man hätte auch im Excel das Format der Zelle ändern können.
rechtsklick -->zelle formatieren --> Benutzerdefiniert YYYY-MM-DD so macht er dir aus 12-10-2009 2009-10-12m.f.g
b. zimmel
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
ich habe alles genau nach deiner Anweisung durchgeführt. Es hat super geklappt.
Gruß
Ähnliche Themen
-
SQL Datetime mit PHP date() vergleichen
Von iLu_is_a_loser im Forum PHPAntworten: 1Letzter Beitrag: 22.12.10, 14:31 -
Gruppieren nach Jahr und Monat, angezeigt werden soll der 1.Tag im Monat um 00:00
Von charlie2009 im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 15.09.09, 19:22 -
Aus einem String ein Datum auslesen und dann einzeln nach Tag,Monat,Jahr ausgeben
Von oldboy im Forum JavaAntworten: 5Letzter Beitrag: 15.10.07, 16:56 -
mit DateTime Anzahl der Tage in einem Monat rausfinden ...
Von Duffman666 im Forum .NET Web und KommunikationAntworten: 7Letzter Beitrag: 11.12.06, 13:18 -
date format - sql abfrage nach monat ?
Von HammerHe@rt im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 06.04.02, 14:25





Zitieren


Login





