У меня есть таблица MySQL, настроенная с датами, и сведения в этой таблице представляют собой три поля даты (хранятся в формате ГГГГ-ММ-ДД), которые определяют, отображается ли совпадение для регистрации в форме или нет.
Код: Выделить всё
+-------+-----------------+-----------------+----------------+---------+
| id | match_date | release_date | removal_date | gender |
+-------+-----------------+-----------------+----------------+---------+
| 1 | 2026-01-09 | 2026-01-01 | 2026-01-08 | Male |
| 2 | 2026-02-06 | 2026-01-22 | 2026-01-11 | Female |
| 3 | 2026-04-02 | 2026-02-22 | 2026-03-18 | Male |
| 4 | 2026-02-16 | 2026-01-22 | 2026-02-09 | Female |
+-------+-----------------+-----------------+----------------+---------+
release_date (дата, начиная с которой запись будет отображаться в форме регистрации)
removal_date (Дата, когда матч исчезнет из поля зрения при регистрации) форма)
Код: Выделить всё
CREATE TABLE `competition_matches` (
`id` int(11) NOT NULL,
`gender` varchar(250) DEFAULT NULL,
`match_date` date DEFAULT NULL,
`release_date` date DEFAULT NULL,
`remove_date` date DEFAULT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `competition_matches` (`id`, `match_date`, `release_date`, `remove_date`,`gender`) VALUES
('1', '2026-01-09', '2026-01-01', '2026-01-08', 'Male'),
('2', '2026-02-06', '2026-01-22', '2026-01-31', 'Female'),
('3', '2026-04-02', '2026-02-22', '2026-03-18', 'Male'),
('4', '2026-02-16', '2026-01-22', '2026-02-09', 'Female');
Код: Выделить всё
SELECT *
FROM competition_matches
WHERE match_date >= CURRENT_DATE()
AND release_date >= CURRENT_DATE()
AND remove_date >= CURRENT_DATE()
AND gender='Male'
ORDER by match_date ASC LIMIT 3;
- Match_date находится либо сегодня, либо в будущем.
- Release_date сработала. IE, дата сегодня или в будущем.
- Remove_date не была достигнута.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -criterias
Мобильная версия