Ik moet op mijn werk een overzicht maken van alle absenties voor een kalendermaand. Alleen helaas zie ik de oplossing niet om alle orders op te halen die binnen een maand vallen. Op een of andere manier gaat het fout en ik begin een beetje radeloos te worden omdat het vandaag af moet zijn 
Ik heb de volgende tabel waarin alle absenties worden opgeslagen. De start en end velden bevat een unix timestamp met de begin- en einddatum of de vakantie/absentie.
Met de volgende absenties records:
Nu wil ik graag alle absenties ophalen die binnen een bepaalde datumreeks vallen. Alleen het probleem is dat is dat ik niet de absentie terug krijg die of halverwege de maand beginnen of afloopt.
Ik heb de volgende query geprobeerd alleen zie ik niet wat ik fout doe:
Ik krijg nu namelijk absenties terug zelfs van begin dit jaar
Wat is de correct manier op zulke data op te halen?
Ik heb de volgende tabel waarin alle absenties worden opgeslagen. De start en end velden bevat een unix timestamp met de begin- en einddatum of de vakantie/absentie.
SQL:
1
2
3
4
5
6
7
8
9
10
11
| CREATE TABLE IF NOT EXISTS `tl_absences` ( `id` int(10) unsigned NOT NULL auto_increment, `pid` int(10) unsigned NOT NULL default '0', `type` varchar(100) NOT NULL default '', `tstamp` int(10) unsigned NOT NULL default '0', `name` varchar(255) NOT NULL default '', `start` int(10) unsigned NOT NULL default '0', `end` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `pid` (`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; |
Met de volgende absenties records:
SQL:
1
2
3
4
| INSERT INTO `tl_absences` (`id`, `pid`, `tstamp`, `name`, `type`, `start`, `end`) VALUES (1, 0, 1320301001, 'Kerstvakantie', 'holiday', 1293145200, 1293922800), (2, 0, 1320301001, 'Uitrusten in Nederland', 'holiday', 1320274800, 1320534000), (3, 0, 1320301554, 'Sinterklaas', 'holiday', 1322434800, 1322953200); |
Nu wil ik graag alle absenties ophalen die binnen een bepaalde datumreeks vallen. Alleen het probleem is dat is dat ik niet de absentie terug krijg die of halverwege de maand beginnen of afloopt.
Ik heb de volgende query geprobeerd alleen zie ik niet wat ik fout doe:
SQL:
1
2
3
4
5
6
7
8
| # 1320102000 = 01-11-2011 # 1320102000 = 01-11-2011 SELECT * FROM `tl_absences` WHERE (start <= 1320102000 OR start >= 1320102000) AND (end <= 1322607600 OR end >= 1322607600) AND type='holiday' |
Ik krijg nu namelijk absenties terug zelfs van begin dit jaar
Wat is de correct manier op zulke data op te halen?