Дата от datetime поле, mysql 4.0.20-log
4 отговора
430 прегледа
Дата от datetime поле, mysql 4.0.20-log
Хех, снервих се вече затова ако някой има идея какъв точно е проблема, да помага моля :(
Значи имаме някакъв mysql сървър някъде си, Select version() казва : mysql 4.0.20-log. Имам таблица с поле Starts_At - datetime и искам да взема всички записи, с днешна дата. Сиреч задачата се свежда до това да взема датата от datetime полето. Лесно, ама:
1. Date(datetime) - няма такова чудо. Това добре- според докуметацията на Mysql 5.0.0-alpha - "DATE() is available as of MySQL 4.1.1. "
2. Пробвам с:
SELECT *
FROM Table
WHERE DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) = CURDATE( );
MySQL 4.1.1 - чудесно, съгласява се
MySQL 4.0.20 - не дава грешка, но не връща и резултат, записи с днешна дата има
само: SELECT DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) FROM Table - работи
само: SELECT CURDATE() - работи
3. Пробвах да си взема датата със DAY(datetime),MONTH(datetime),YEAR(datetime), но DAY() отново е след MySQL 4.1.1...
Е не знам вече какво да направя, ако може някой да помогне ще му бъда много благодарна :)
Значи имаме някакъв mysql сървър някъде си, Select version() казва : mysql 4.0.20-log. Имам таблица с поле Starts_At - datetime и искам да взема всички записи, с днешна дата. Сиреч задачата се свежда до това да взема датата от datetime полето. Лесно, ама:
1. Date(datetime) - няма такова чудо. Това добре- според докуметацията на Mysql 5.0.0-alpha - "DATE() is available as of MySQL 4.1.1. "
2. Пробвам с:
SELECT *
FROM Table
WHERE DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) = CURDATE( );
MySQL 4.1.1 - чудесно, съгласява се
MySQL 4.0.20 - не дава грешка, но не връща и резултат, записи с днешна дата има
само: SELECT DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) FROM Table - работи
само: SELECT CURDATE() - работи
3. Пробвах да си взема датата със DAY(datetime),MONTH(datetime),YEAR(datetime), но DAY() отново е след MySQL 4.1.1...
Е не знам вече какво да направя, ако може някой да помогне ще му бъда много благодарна :)
Re: Ама ти ЗНАЕШ отговора!!!
Само деня от датата можеш да го "вземеш" с
DATE_FORMAT( Starts_At, '%d ' ) !!!!!!!
Между другото
WHERE DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) = CURDATE( );
Е голяма грешка.
Защото
WHERE DATE_FORMAT( Starts_At ... ) = ...
няма да използва индекс.
Тъй, че решението ти е:
SELECT ... WHERE Starts_At > CURDATE();
Ако имаш стойности след днешния ден тогава
... WHERE Starts_At BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY;
salle.online.bg/sig<P ID="edit"><FONT class="small"><EM>Редактирано от salle на 25.07.04 22:22.</em></font></p>
DATE_FORMAT( Starts_At, '%d ' ) !!!!!!!
Между другото
WHERE DATE_FORMAT( Starts_At, '%Y-%m-%d ' ) = CURDATE( );
Е голяма грешка.
Защото
WHERE DATE_FORMAT( Starts_At ... ) = ...
няма да използва индекс.
Тъй, че решението ти е:
SELECT ... WHERE Starts_At > CURDATE();
Ако имаш стойности след днешния ден тогава
... WHERE Starts_At BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY;
salle.online.bg/sig<P ID="edit"><FONT class="small"><EM>Редактирано от salle на 25.07.04 22:22.</em></font></p>
Редактирано от salle на
Re: Ама ти ЗНАЕШ отговора!!!
SELECT *
FROM Table
WHERE Starts_At > CURDATE( )
10x:)))
FROM Table
WHERE Starts_At > CURDATE( )
10x:)))
Re: Ама ти ЗНАЕШ отговора!!!
nai pravilno e:
select * from table where cast(Start_at as date)=curdate()
taka moje da se izpolzva i s drugi konkretni dati osven dneshnata ;)
select * from table where cast(Start_at as date)=curdate()
taka moje da se izpolzva i s drugi konkretni dati osven dneshnata ;)
Re: Ех да му се не види ...
Не стига, че отговаряш на нещо писано преди 2 години ами и не четеш.
Твоето "правилно" предложение няма да използва индкес а винаги ще претърсва цялата таблица.
salle.online.bg/sig
Твоето "правилно" предложение няма да използва индкес а винаги ще претърсва цялата таблица.
salle.online.bg/sig