[SQL] Suchen in der Datenbank

Dieses Thema im Forum "Webentwicklung" wurde erstellt von JoE THE, 2. Februar 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. Februar 2010
    Suchen in der Datenbank

    Hallo

    Ich habe eine MySQL Datenbank, worin Kundendaten gespeichert sind. Jetzt möchte ich über eine Suchfunktion alle Kunden ausspucken, welche z.B. 20 Jahre alt sind. Leider habe ich in der Datenbank nur das Geburtsdatum der jeweiligen personen gespeichert.

    Gibt es einen Weg, wie man das mit MySQL realisieren kann?

    Geburtsdatum ist im Format varchar() gespeichert, und besitzt folgendes Format: 12.04.1989.


    Hat jemand eine Idee, wei man das realisieren könnte?

    mfg
    joe the
     
  2. 2. Februar 2010
    AW: Suchen in der Datenbank

    warum machst du nicht ein date format draus?
    was spricht dagegen?
     
  3. 2. Februar 2010
    AW: Suchen in der Datenbank

    andernfalls kannst du ja noch eine Spalte alter hinzufügen...
    dabei musst du dann innerhalb deiner php dateien darauf auchten, dass der spaltenname alter zu fehlern führt, da alter ein sql befehl ist, daher innerhalb des php codes immer `alter` schreiben (also mit `` )
    spaltenadd in phpmyadmin:
    auf SQL klicken und folgenden befehl abtippsen:
    PHP:
    ALTER TABLE tbl_blabla ADD COLUMN  ( spaltenname char ( 30 ))

    -tbl_blabla = name der tabelle wo die spalte dazu soll

    - spaltenname (der name auf den dann per sql, php zugegriffen wird)

    - char(30) - format / beliebig zu wählen...

    und dann sollte das mit der reinen suche in der sql zumindest die leichteste variante sein um nach einem bestimmten alter suchen zu können
     
  4. 2. Februar 2010
    AW: Suchen in der Datenbank

    Gestern kam nen Kollege vorbei und meinte: "Alter bei Googel kann man ja suchen!!"

    Code:
    Select userId from Bla where
    extract(year from CURDATE()) - extract(year from str_to_date(spalteDatum, "%d.%b.%Y")) = 20
    
    ich habe es jetzt nicht getestet, aber sollte funktionieren.
     
  5. 2. Februar 2010
    AW: Suchen in der Datenbank

    Ich wollte nur eure Gehirnzellen in Schwung halten! ;-)

    Aber super. Das ist das was ich gesucht habe!!! Danke!

    Für alle gibts natürlich ne fette Bewertung!
     
  6. 2. Februar 2010
    AW: Suchen in der Datenbank

    wenn weitere fragen sind immer her damit^^
     
  7. 3. Februar 2010
    AW: Suchen in der Datenbank

    ja, aber hier sprechen wir auch von performanz. wenn deine datensätze ansteigen, dann solltest du definitiv eine andere version nehmen
     
  8. 3. Februar 2010
    AW: Suchen in der Datenbank

    meinste das casten von char in date frisst so viel zeit?
    zur not könnte man ja auch einfach nur die 4 letzten zeichen aus dem varchar nehmen und mit dem aktuellen jahr vergleichen.

    ich würde sowieso mit timestamps arbeiten. das sind nur zahlen. da geht das rechnen noch schneller.
     
  9. 8. Februar 2010
    AW: Suchen in der Datenbank

    Danke für eure Antorten.

    Jedoch komme ich noch bei einer anderen - eigentlich doch simplen Sache - nicht weiter:

    Code:
    SELECT * FROM `Frauen` WHERE adresse_kanton = 'Zuerich' && 'Schwyz'
    Warum wird mir hierbei kein Ergebnis ausgegeben?

    Also es gibt zwei Einträgen, mit adresse_kanton = Schwyz und Zuerich
     
  10. 8. Februar 2010
    AW: Suchen in der Datenbank

    SELECT * FROM `Frauen` WHERE adresse_kanton = 'Zuerich' && adresse_kanton = 'Schwyz'

    so sollte es gehen.. wobei ich es komisch finde dass ein feld 2 einträge haben soll ?(
     
  11. 8. Februar 2010
    AW: Suchen in der Datenbank

    && wird ned funktionieren, weil das feld "adresse_kanton" nicht gleichzeitig "Zuerich" und "Schwyz" sein kann.

    Code:
    SELECT * 
    FROM `Frauen` 
    WHERE 
     adresse_kanton IN ('Zuerich', 'Schwyz')
    beachte: IN ist schneller als OR
     
  12. 8. Februar 2010
    AW: Suchen in der Datenbank

    Wunderbar! Es läuft. Danke! Habe das mit IN nicht gewusst.

    Tja. Normalerweise habe ich nur mit C++ zu tun. ;-)
     
  13. 8. Februar 2010
    AW: Suchen in der Datenbank

    Auch da hätte es keine Sinn gemacht Er meinte deine Abfrage, denn das Feld kann nur entweder 'Zuerich' ODER 'Schwyz' sein, aber nicht beides auf einmal. Natürlich kann in der gesamten Tabelle aber beides vorkommen.
     
  14. 11. Februar 2010
    AW: Suchen in der Datenbank

    Hmm also das funtioniert doch nicht so wie es sollte.

    MySQL gibt aber keine Fehlermeldung aus, sondern zeigt einfach kein Resultat an. Stimmt denn das so:
    geburtsdatum ist der name der spalte...D.h. doch, dass jetzt alle Datensätze, ausgegeben werden, wo die Person vor dem Jahr 2000 geboren wurde, oder?
     
  15. 11. Februar 2010
    AW: Suchen in der Datenbank

    sollte so funktionieren.
    bei der angabe wie das feld gebursdatum aufgebaut ist könnte natürlich noch was falsch sein.
     
  16. 12. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Suchen in der Datenbank

    Es ist ein varchar(10)...

    Bild
     
  17. 12. Februar 2010
    AW: Suchen in der Datenbank

    verwende timestamps!

    stell das feld auf "unsigned int(13)"
    13 wegen javascript, beugt wtf's vor

    timestamps gibts in etlichen anderen sprachen auch, wie zb (my)sql, php, js, java, c, c++ ...
    d.h. du kannst sie systemweit verwenden und damit rechnen.

    ganz einfach angesetzt könnte der query dann so aussehen:
    Code:
    SELECT ...
    FROM ...
    WHERE 2010 - FROM_UNIXTIME(`geburtstag`, "%Y") >= 21
     
  18. 12. Februar 2010
    AW: Suchen in der Datenbank

    Und was ist wenn jemand vor dem 01.01.1970 Geburtstag hat? Gibt das keine Probleme?
    Date sollte doch klappen.
     
  19. 12. Februar 2010
    AW: Suchen in der Datenbank

    Bin mir nicht sicher, aber bei MSSQL brauchst du z.b. wenn nach einem OR ein AND folgt nochmal klammern...
    versuch es bitte nochmal so:

     
  20. 12. Februar 2010
    AW: Suchen in der Datenbank

    ok stimmt, dann "unsigned" weglassen.
    php und (my)sql können timestamps auch im minus-bereich (vor 1970) verarbeiten.

    der einzige nachteil: php kann nur von 13.12.1901 bis 19.1.2038 (mehr passt in nen 32bit integer ned rein )
     
  21. 12. Februar 2010
    AW: Suchen in der Datenbank

    Habs herausgefunden wies geht.

    Habe aber die Spalte in eine DATE Format umgewandelt.

    Code:
    (YEAR(CURRENT_DATE())-YEAR(geburtsdatum)) > 22
     
  22. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.