MySql – Funktionen im SELECT

Freitag, 4. Januar 2008

Manchmal kommt es vor, dass man ganz bestimmte Daten einer Datenbank braucht, z.B. eine bestimmte Anzahl oder Durchsschnittswerte, um das einfacher zu gestalten gibt es in MySql Funktionen die direkt in den SELECT Ausdruck geschrieben werden können.
Dazu gehören

Gruppen-Funktionen

COUNT(Feld) Anzahl der Datensätze, deren Feld nicht NULL (leer) ist
AVG(Feld) Durchschnitt vom Feldinhalt
MIN(Feld) Kleinster Wert der Gruppe
MAX(Feld) Größter Wert der Gruppe
SUM(Feld) Summe der Werte von Feld

mathematische Funktionen

%, MOD() Modulo (ganzzahliger Rest)
ABS() Betrag von
COS() Cosinus (in rad)
DEGREES() Umrechnung von rad in deg (Grad)
PI() Die Zahl Pi
POW(X,Y) X hoch Y
RAND() Liefert einen Zufallswert zwischen 0 und 1
ROUND(x,n) Rundet x auf n Stellen
SQRT() Wurzel (2.Grades)
TRUNCATE(x,n) Schneidet x nach n Kommastellen ab

Zeichenketten-(String-)Funktionen

CONCAT(str1, str2, ...) Verkettet alle in den Klammern angegebenen Strings zu einem String
LEFT(str,n) n Zeichen des Strings str, von links gezählt
LTRIM(str) Schneidet die Leerzeichen am Ende von str ab
PASSWORD(str) Verschlüsselter String von str
REVERSE(str) Umkehrung von str, also das letzte Zeichen steht am Anfang usw.
LCASE(str), LOWER(str), UCASE(str) Wandelt str in Kleinbuchstaben
UPPER(str) Wandelt str in Großbuchstaben

Datums-Funktionen

DAYOFWEEK(date) Nummer des Wochentages dieses Datums (1 = Sonntag, 7 = Sonnabend)
DAYOFMONTH(date) Tag im Monat dieses Datums
DAYOFYEAR(date) Tag im Jahr dieses Datums
WEEK(date,first) Nummer der Woche im Jahr dieses Datums. Wenn first = 1, beginnt die Woche mit Montag.
MONTH(date) Monat dieses Datums
YEAR(date) Jahr dieses Datums
UNIX_TIMESTAMP(date) Zeit laut Betriebssystem Unix, angegeben in Sekunden, vom 01.01.1970 bis zum angegebenen Datum
DATE_FORMAT(date, format) Datum in einem bestimmten Format:
%W - Wochentag
%w - Nummer des Wochentags (0 = Sonntag, 6 = Sonnabend)
%e - Tag des Monats (0 bis 31)
%d - Tag des Monats (00 bis 31)
%j - Tag im Jahr (001 bis 366)
%U - Woche im Jahr (1.Wochentag = Sonntag)
%u - Woche im Jahr (1.Wochentag = Montag)
%M - Name des Monats
%m - Nr des Monats (00 bis 12)
%c - Nr des Monats (0 bis 12)
%Y - Jahr (vierstellig)
%y - Jahr (zweistellig)
%T - Uhrzeit (24 Std. hh:mm:ss)
%H - Stunde (00 - 23)
%k - Stunde (0 - 23)
%I - Stunde (00 - 12)
%l - Stunde (0 - 12)
%i - Minuten (00 - 59)
%S - Sekunden (00 - 59)

Mit diesen Funktionen kann man dann ganz einfach zum Beispiel Geburtstage eines Jahres ausgeben lassen.

$q = "SELECT * FROM databse
WHERE DATE_FORMAT(birthday,'%m%d') >= DATE_FORMAT(CURRENT_DATE,'%m%d')
ORDER BY DATE_FORMAT(birthday,'%m%d')";

$result = mysql_query($q);