CREATE TABLE `calendar_week` ( `year` smallint(6) NOT NULL, `startdate` date NOT NULL, `enddate` date NOT NULL, `start` datetime NOT NULL, `end` datetime NOT NULL, `startmonth` date NOT NULL, `endmonth` date NOT NULL, `in_session` tinyint(4) NOT NULL, PRIMARY KEY (`year`,`startdate`), UNIQUE KEY `year_start` (`year`,`start`), UNIQUE KEY `year_end` (`year`,`end`), UNIQUE KEY `year_enddate` (`year`,`enddate`), KEY `year_startmonth` (`year`,`startmonth`), KEY `year_endmonth` (`year`,`endmonth`), KEY `start` (`start`), KEY `startdate` (`startdate`), KEY `startmonth` (`startmonth`), KEY `end` (`end`), KEY `enddate` (`enddate`), KEY `endmonth` (`endmonth`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `calendar_week` VALUES (2012,'2012-04-22','2012-04-28','2012-04-22 00:00:00','2012-04-28 23:59:59','2012-04-01','2012-04-01',1), (2012,'2012-04-29','2012-05-05','2012-04-29 00:00:00','2012-05-05 23:59:59','2012-04-01','2012-05-01',1), (2012,'2012-05-06','2012-05-12','2012-05-06 00:00:00','2012-05-12 23:59:59','2012-05-01','2012-05-01',1), (2012,'2012-05-13','2012-05-19','2012-05-13 00:00:00','2012-05-19 23:59:59','2012-05-01','2012-05-01',1), (2012,'2012-05-20','2012-05-26','2012-05-20 00:00:00','2012-05-26 23:59:59','2012-05-01','2012-05-01',1), (2012,'2012-05-27','2012-06-02','2012-05-27 00:00:00','2012-06-02 23:59:59','2012-05-01','2012-06-01',1), (2012,'2012-06-03','2012-06-09','2012-06-03 00:00:00','2012-06-09 23:59:59','2012-06-01','2012-06-01',1), (2012,'2012-06-10','2012-06-16','2012-06-10 00:00:00','2012-06-16 23:59:59','2012-06-01','2012-06-01',1), (2012,'2012-06-17','2012-06-23','2012-06-17 00:00:00','2012-06-23 23:59:59','2012-06-01','2012-06-01',1); SELECT startdate, enddate, start, end, UNIX_TIMESTAMP(startdate), UNIX_TIMESTAMP(enddate) FROM calendar_week; SELECT COUNT(*), MIN(start), MAX(end), UNIX_TIMESTAMP(MIN(start)), UNIX_TIMESTAMP(MAX(end)), COUNT(*) FROM calendar_week WHERE year=2012 AND start BETWEEN FROM_UNIXTIME(1335078000) AND FROM_UNIXTIME(1336201200); SELECT MIN(start) FROM calendar_week WHERE year=2012 AND start BETWEEN FROM_UNIXTIME(1335078000) AND FROM_UNIXTIME(1336201200) group by 'nothing'; SELECT COUNT(*) FROM calendar_week WHERE year=2012 AND start BETWEEN FROM_UNIXTIME(1335078000) AND FROM_UNIXTIME(1336201200); SELECT * FROM calendar_week WHERE year=2012 AND start BETWEEN FROM_UNIXTIME(1335078000) AND FROM_UNIXTIME(1336201200);