ForJest
- свежая кровь
Некоторые аспекты BETWEEN
Всем желающим предлагается развлекательно/поучительный топик по использованию BETWEEN.
1. Часть инициализационная
2. Часть - развлекательная
3. Часть - познавательная.
Ну думаю пытливые умы сами докапаются до истины
Всем желающим предлагается развлекательно/поучительный топик по использованию BETWEEN.
1. Часть инициализационная
PHP:
CREATE TABLE min_date (
id int(11) NOT NULL auto_increment,
dt_field datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
KEY dt_field (dt_field)
) TYPE=MyISAM;
INSERT INTO min_date (id, dt_field) VALUES (1, '2003-02-01 00:00:01');
CREATE TABLE tbl_data (
id_foreign int(11) NOT NULL default '0',
d_occurs date NOT NULL default '0000-00-00',
KEY id_foreign (id_foreign,d_occurs)
) TYPE=MyISAM;
INSERT INTO tbl_data (id_foreign, d_occurs) VALUES
(1, '2003-02-15'),
(1, '2003-02-16'),
(1, '2003-02-18');
PHP:
SELECT *
FROM min_date m, tbl_data t
WHERE m.id=t.id_foreign AND t.d_occurs BETWEEN m.dt_field AND '2004-01-01 23:59:59';
//результат отсутствует, хотя по идее должен был бы
SELECT *
FROM min_date m, tbl_data t
WHERE m.id = t.id_foreign AND t.d_occurs
BETWEEN '2003-02-01 00:00:01' AND '2004-01-01 23:59:59';
//тоже самое что и первая выборка, по сути, но не исполнению
SELECT *
FROM min_date m, tbl_data t
WHERE m.id = t.id_foreign AND t.d_occurs >= m.dt_field AND t.d_occurs <= '2004-01-01 23:59:59';
//еще раз тоже самое, другими словами
Ну думаю пытливые умы сами докапаются до истины