Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Samstag, 20. Oktober 2007, 16:03

SQL befehle schachteln ( date_format und date_add )

Hallo, ich möchte ausgeben, welche geburstage in den kommenden 100 tagen gefeiert werden und zwar nur mit SQL, es gibt dafür verschiedene ansätze, habe auch schon welche gefunden, aber ich wollte einen eigenen. Wahrscheinlich habe ich einen kleinen Denkfehler.

Meine Tabelle sieht so aus


Zitat

"0000000001";"peter";"1981-02-25"
"0000000002";"julian";"1983-04-30"
"0000000003";"martin";"1985-06-13"
"0000000004";"julian";"1987-08-17"
"0000000005";"karl";"1989-10-25"
"0000000006";"manfred";"1991-12-30"
"0000000007";"waltern";"1993-02-25"
"0000000008";"tim";"1995-04-30"
"0000000009";"stephan";"1997-06-25"
"0000000010";"wilhelm";"1999-08-30"

also ID, username und geburtsdatum

Das blöde ist jetzt, dass die User nicht in ein und dem selben jahr geburtstag haben, sonst wäre das ganze wohl etwas leichter. Mein Idee ist nun folgene, ich formatiere, das Datum immer so, dass das jahr außer acht gelassen wird

Zitat

DATE_FORMAT( geb_dat, '%m%d' )
dann vergleiche ich dieses Datum mit dem Datum von heute und dem von heute +20 Tagen. Alle User die in diesem Intervall Geburtstag haben, sollen ausgegeben werden.


Mein query gibt allerdings 0 Datensätze aus

Zitat




SELECT name, geb_dat, DATE_FORMAT( geb_dat, '%m%d' )
FROM tab_user
WHERE DATE_FORMAT(geb_dat,'%m%d')
BETWEEN DATE_FORMAT(curdate(),'%m%d')
AND date_add(DATE_FORMAT(curdate(),'%m%d'),INTERVAL 200 DAY)


habe ich jetzt einen Denkfehler?

Hier noch der Code zum erzeugen der Tabellen

Zitat


CREATE TABLE `tab_user` (
`id` int(10) unsigned zerofill NOT NULL auto_increment,
`name` varchar(30) collate latin1_general_ci NOT NULL,
`geb_dat` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=12 ;

--
-- Daten für Tabelle `tab_user`
--

INSERT INTO `tab_user` (`id`, `name`, `geb_dat`) VALUES
(0000000001, 'peter', '1981-02-25'),
(0000000002, 'julian', '1983-04-30'),
(0000000003, 'martin', '1985-06-13'),
(0000000004, 'julian', '1987-08-17'),
(0000000005, 'karl', '1989-10-25'),
(0000000006, 'manfred', '1991-12-30'),
(0000000007, 'waltern', '1993-02-25'),
(0000000008, 'tim', '1995-04-30'),
(0000000009, 'stephan', '1997-06-25'),
(0000000010, 'wilhelm', '1999-08-30');
Signatur von »oop1« _________