tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von vandamp
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
989
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    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 voraus
    Geändert von sharmuur (30.04.10 um 10:15 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von sharmuur Beitrag anzeigen
    Selektieren nach datum, monat, tag in date und datetime formaten
    öhm.. und nun?
     
    ---------------------------------------------------------------------------------------------------
    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

  3. #3
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    aus Versehen abgeschickt

    jetzt is die Frage da
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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)

    Code sql:
    1
    2
    3
    4
    5
    6
    
    SELECT *
    FROM myTable
    WHERE
        YEAR(myDateField) = 2010
        AND MONTH(myDateField) = 4
        AND DAY(myDateField) = 30;
    oder
    Code sql:
    1
    2
    3
    
    SELECT *
    FROM myTable
    WHERE DATE(myDateField) = STR_TO_DATE('30.04.2010', '%d.%m.%Y');
    sharmuur bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    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

  5. #5
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    Hallo Yaslow,

    danke für die wertvolle Tipps. Jetzt kann ich zweifelfrei meine DB anlegen.

    Gruß
     

  6. #6
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    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ß
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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;
    sharmuur bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    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

  8. #8
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    danke danke,

    ich teste es gleich
     

  9. #9
    Avatar von vandamp
    vandamp vandamp ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Wien
    Beiträge
    155
    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-12
    sharmuur bedankt sich. 
    m.f.g
    b. zimmel

  10. #10
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von vandamp Beitrag anzeigen
    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-12
    Macht manchmal Sinn, manchmal auch nicht. Wenn du das Excel als Datenquelle bekommst (im Falle von csv-Dateien als Datentransfer zwieschen Systemen) ist es mühsam jedesmal zuerst das Excel zu öffnen um das Feld anzupassen.
     
    ---------------------------------------------------------------------------------------------------
    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

  11. #11
    sharmuur sharmuur ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Ort
    München
    Beiträge
    45
    ich habe alles genau nach deiner Anweisung durchgeführt. Es hat super geklappt.
    Gruß
     

Ähnliche Themen

  1. SQL Datetime mit PHP date() vergleichen
    Von iLu_is_a_loser im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.12.10, 14:31
  2. Gruppieren nach Jahr und Monat, angezeigt werden soll der 1.Tag im Monat um 00:00
    Von charlie2009 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 15.09.09, 19:22
  3. Antworten: 5
    Letzter Beitrag: 15.10.07, 16:56
  4. mit DateTime Anzahl der Tage in einem Monat rausfinden ...
    Von Duffman666 im Forum .NET Web und Kommunikation
    Antworten: 7
    Letzter Beitrag: 11.12.06, 13:18
  5. date format - sql abfrage nach monat ?
    Von HammerHe@rt im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 06.04.02, 14:25