Benjamins Blog

Artikel mit Tag sql

  • Blog
  • Themen
  • Fotografie
  • Sneaker
  • Kontakt
  • Impressum

Artikel mit Tag sql

Verwandte Tags
ccc coding mysql postgresql
-25-
08
2008

Abfrage von auftretenden Jahrestagen (wie Geburtstagen) mit MySQL

Viele Datenbanken mit Personendaten enthalten Geburtsdaten. So ist eine typische Abfrage das Ermitteln von Personen, die in den nächsten Tagen Geburtstag haben oder in den vergangenen Tagen hatten. Eine solche Abfrage gestaltet sich aus verschiedenen Gründen komplizierter. Einerseits müssen alle Eigenheiten bei der Kalkulation mit Daten beachtet werden (z.B. Schaltjahre), andererseits möchte man ungern die kompletten Daten aus der Datenbank ziehen und dann erst dann mit einer weiteren Programmiersprache verarbeiten und berechnen, sondern direkt die Schnelligkeit und Funktionalität der Datenbank nutzen. Aus diesem Grund möchte ich hier meinen Versuch vorstellen, dieses Problem mit MySQL zu lösen. Ziel war es, eine Ergebnis zu bekommen, das auflistet, welche Personen innerhalb eines definierbaren Zeitraums Geburtstag hatten oder noch Geburtstag haben und wie alt die Person jeweils geworden ist oder wird. Das Feld 'birthday' soll hierbei ein Datenfeld vom Typ Date sein. Hier werden alle Geburtstage zwischen vergangener Woche und den kommenden zwei Wochen chronologisch aufgelistet:

SELECT
`name`,
`birthday`,
@nextBirthday := `birthday` + INTERVAL (YEAR(CURRENT_DATE) - YEAR(`birthday`) + IF(DATE_FORMAT(CURRENT_DATE, "%m%d") > DATE_FORMAT(`birthday`, "%m%d"), 1, 0)) YEAR,
@prevBirthday := @next - INTERVAL 1 YEAR,
@daysNext := DATEDIFF(@nextBirthday, CURRENT_DATE),
@daysPrev := DATEDIFF(@prevBirthday, CURRENT_DATE),
IF(ABS(@daysPrev) < @daysNext,@daysPrev +0 ,@daysNext+0) AS `days`,
IF(ABS(@daysPrev) < @daysNext,YEAR( @prevBirthday ) - YEAR( `birthday` ),YEAR( @nextBirthday ) - YEAR( `birthday` )) AS `age`
FROM
`table`
HAVING
`days` BETWEEN -7 AND 14
ORDER BY
`days` ASC



Die Grundidee ist relativ einfach. Es wird mithilfe von MySQL-Datumsfunktionen berechnet, wann die Person das nächste Mal Geburtstag hat und wann sie das letzte mal hatte. Nun wird geprüft, welches Ereignis aktueller ist und entsprechend die Werte 'days' und 'age' belegt. Mithilfe der HAVING-Klausel lässt sich außerdem die Ergebnismenge eingeschränken auf einen bestimmten Zeitraum.
Geschrieben von Benjamin Erb am 25.08.2008 in Programmierung Kommentare: (3) Trackback: (1)
Tags für diesen Artikel: coding, mysql, sql
-14-
11
2006

Vortrag über PostgreSQL

Gestern fand im Rahmen einer monatlichen Vortragsreihe des Chaos Computer Clubs Ulm ein Vortrag über die freie Datenbank PostgreSQL statt. Vollständigen Artikel lesen...
Geschrieben von Benjamin Erb am 14.11.2006 in Open-Source, Web Kommentare: (0) Trackbacks: (0)
Tags für diesen Artikel: ccc, postgresql, sql
« vorherige Seite   (Seite 1 von 1, insgesamt 2 Einträge)   nächste Seite »

Über den Autor

Benjamin Erb Benjamin Erb ist 24 Jahre alt und studiert an der Universität Ulm Medieninformatik.

Aktuelle Projekte

  • diretto.org
  • IOException.de

Quicklinks

  • Meine Amazon-Wishlist
  • Mein PGP-Schlüßel
  • twitter.com/b_erb
  • facebook.com/benjamin.erb

Blogroll

  • Davids Blog
  • Flos Warteschleife
  • stk bloggt.es
  • guido.demelo.de
  • Sina paints her life
  • Malte Wittkugel.net
  • Marcus bloggt.es
  • claus bloggt.es
  • floBLOG
  • Basti in Japan
  • Sven in Frankreich

Sneaker-Blogroll

  • tomat3.de
  • sneakerb0b.de
  • vEnoMaZn
  • sneakerized.com
  • welovesneaker.com

Kalender

Zurück September '10
Mo Di Mi Do Fr Sa So
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Getaggte Artikel

acm aesthetic computing animation apache blog bücher c++ ccc coding context free data visualization datenschutz dd-wrt design design pattern diretto eclipse fachschaft fail fotos fun gadget gdg handy hardware hip-hop homepage imaging informatik information design italien java javascript joggen kiosk system laptop latein latex mail mathematik mozilla musik mysql netbook nike af1 nike air max nmap perl pgp php politik postgresql privacy processing progwerkstatt psychologie ravensburg rivoli rutenfest s9y samsung q25 sneaker sneaker photography software sopra spanien sport sql studium studivz svn tagato trac trainingscamp typografie ubiquitous computing ubuntu ulm usability user interfaces videos virtualisierung vnc web web 2.0 welfen wikipedia wishlist xslt zivildienst

Archive

September 2010
August 2010
Juli 2010
Das Neueste ...
Älteres ...

Kategorien

  • XML Allgemeines (33)
  • XML Fotos (33)
  • XML Homepage (6)
  • XML Italien (7)
  • XML Lustiges (25)
  • XML Musik (11)
  • XML Nachdenkliches (9)
  • XML Schuhe (24)
  • XML Sonstiges (3)
  • XML Sport (5)
  • XML Videos (2)
  • XML Design (18)
  • XML IT (20)
  • XML Hardware (16)
  • XML Open-Source (7)
  • XML Programmierung (41)
  • XML Studium (61)
  • XML Web (30)
  • XML Datenschutz (6)
  • XML Usability (13)

Alle Kategorien

Feeds

XML RSS 2.0 feed
ATOM/XML ATOM 1.0 feed
XML OPML 1.0 feed

Statistiken

Letzter Artikel: 01.06.2010 16:01
242 Artikel wurden geschrieben
123 Kommentare wurden abgegeben

Verwaltung des Blogs

Login
 

© 2002 - 2010 Benjamin Erb