Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Использование дат в WHERE-условии

Сообщения:  [1-10]   [11-13] 

 
 автор: Trianon   (20.08.2007 в 00:41)   письмо автору
 
   для: oradev   (18.08.2007 в 19:20)
 

>p.s. в Oracle такая беда не пройдет

Что мне нравится в оракле куда больше, так это то, что время там не только монотонное, но и линейное, насколько я понимаю, на всей области определения.

   
 
 автор: Ralph   (18.08.2007 в 20:16)   письмо автору
 
   для: oradev   (18.08.2007 в 19:20)
 

Ну что поделаешь,все таки вверху страницы написано не "форум: БД"и не "форум: SQL""форум: MySQL" :-D

   
 
 автор: oradev   (18.08.2007 в 19:20)   письмо автору
 
   для: Trianon   (18.08.2007 в 01:03)
 


 А в первую очередь потому, что строковое представление и календарная временная сущность этого формата - функции монотонные


Все проще значит, ну что уж ладно - можно курить трубку.

p.s. в Oracle такая беда не пройдет

   
 
 автор: Trianon   (18.08.2007 в 01:03)   письмо автору
 
   для: oradev   (17.08.2007 в 22:20)
 

>TO Trianon: Любое неявное привидение типов нежелательно!
В принципе - да.

>Ибо если есть индекс по дате какой-нить - то если условие селективное - все равно получим FULL SCAN по табличке

Не получим. Разработчики MySQL не за красивые глаза выбрали восточный формат внешнего представления календарных данных. И не из любви к китайцам. А в первую очередь потому, что строковое представление и календарная временная сущность этого формата - функции монотонные. Для любых двух меток времени А и Б, таких что время наступления А раньше времени наступления Б -- строковое представление А также будет лексикографически меньше строкового представления Б, и наоброт.

Так что индекс вместо полного прохода можно использовать даже если написать
SELECT * FROM tbl WHERE LEFT(dt,4) BETWEEN 1966 AND 2007

   
 
 автор: oradev   (17.08.2007 в 22:20)   письмо автору
 
   для: Trianon   (17.08.2007 в 21:59)
 

TO Trianon: Любое неявное привидение типов нежелательно!
Ибо если есть индекс по дате какой-нить - то если условие селективное - все равно получим FULL SCAN по табличке

   
 
 автор: Trianon   (17.08.2007 в 21:59)   письмо автору
 
   для: oradev   (17.08.2007 в 13:06)
 

Для MySQL - способ, предложенный cheops'ом - абсолютно корректный.

   
 
 автор: oradev   (17.08.2007 в 16:05)   письмо автору
 
   для: Ralph   (17.08.2007 в 13:31)
 

За всех не надо говорить

SELECT *
  FROM emp
 WHERE hiredate BETWEEN DATE '1980-04-02' AND DATE '1981-12-31';


С целью явного привидения типов лучше использовать ANSI совместимую date, либо
с помощью других функций преобразования строки в дату. Например, если речь идет о СУБД Oracle таковой является ф-ция to_date('01.02.1990','DD-MM-YYYY') выполняющая явное преобразование.

   
 
 автор: Ralph   (17.08.2007 в 13:31)   письмо автору
 
   для: oradev   (17.08.2007 в 13:06)
 

Значит,ни я,ни тов. Cheops неправы... Жаль... Ну тогда обьясните нам,как правильно ?

   
 
 автор: oradev   (17.08.2007 в 13:06)   письмо автору
 
   для: Ralph   (15.08.2007 в 20:31)
 

Только вот так делать нельзя, если не хотим получить неявное преобразование строки в дату.

   
 
 автор: cheops   (17.08.2007 в 10:51)   письмо автору
 
   для: diez   (15.08.2007 в 17:58)
 

Исправьте запросы следующим образом
SELECT name FROM clients WHERE bd BETWEEN '1972-01-01' AND '1975-01-01';
SELECT name FROM clients WHERE bd >='1972-01-01';

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования