|
Тема
|
query na dati s between
|
|
Автор |
Budah (непознат
) |
Публикувано | 21.01.06 11:11 |
|
Zdravejte, otnovo se izvinqvam, 4e pi6a na latinica, v momenta ne pi6a ot moeto pc i na tova nqma kirilica . V mysql-a imam naredeni periodi ot dati ne6to ot roda na :
01/01/2001
02/01/2001
03/01/2001
04/01/2001
05/01/2001
06/01/2001
...
...
...
24/12/2005
25/12/2005
Ne6to takova . Sled tova s text polence iskam da izvadq vsi4ki dati mejdu 05/01/2001 i 30/06/2001 primerno -->
$query="SELECT * FROM periods WHERE (data BETWEEN '$data_na4alo' AND '$data_krai')";
$result=mysql_query($query, $connection);
Pri koeto rezultatite se vadqt rezultatite sravneni samo po syotvetniq den ot datata ot vsi4ki godini ( kakto e v primera 6te izkara ne6to ot roda na ot 05/01/2001 do 30/01/2001 + ot 05/02/2001 do 30/02/2001 + ot 05/03/2001 do 30/03/2001 ... i taka natatyk ). Abe ob6to vzeto vadi vsi4ko kydeto nameri pyrvite 2 4isla da sa mejdu 05 i 30. Malko dylgi4yk stana posta, no se opitvam da go obqsnq kakto trqbva. Popro4etoh v neta i naistina komandata between mi se stori prakti4na, no ne sravnqva simvolite sled "/". Ta zna4i vyprosa mi e kak da izvadq zapisite ot mysql-a mejdu dadenite 2 dati , kato zapisite v bazata sa za vseki den.
| |
Тема
|
Re: Ами то затова си има тип DATE
[re: Budah]
|
|
Автор |
salle (един такъв) |
Публикувано | 21.01.06 14:42 |
|
Като пазиш датите в CHAR или VARCHAR мъчи се сега
| |
Тема
|
Re: Ами то затова си има тип DATE
[re: salle]
|
|
Автор |
Budah (непознат
) |
Публикувано | 21.01.06 16:40 |
|
Що за отговор "мъчи се". Като не можеш да помогнеш недей да пишеш глупави мнения.
Редактирано от Budah на 21.01.06 16:52.
| |
Тема
|
Re: Ами то затова си има тип DATE
[re: Budah]
|
|
Автор |
salle (един такъв) |
Публикувано | 21.01.06 21:34 |
|
Ако използваш DATE твоят BETWEEN оператор ще работи чудесно без нужда от допълнителни глупости.
А в твоя случай трябва първо да форматираш датите от твоите стрингове до DATE и чак тогава ще сработи при което естествено няма да може да използва индекс т.е. баааааавно
Най-доброто до което можеш да достигнеш е комбинация от STR_TO_DATE() и BETWEEN
Изобщо най-добре е да си преправиш таблицата.
Ако пък чак толкова те мързи да погледнеш в ръководството
.. WHERE STR_TO_DATE(data, '%d/%m/%Y') BETWEEN ....
И не се оплаквай, че е бавно. Виж по-горе защо.
| |
Тема
|
Правиш си една аритметика
[re: Budah]
|
|
Автор |
NikB (любопитен) |
Публикувано | 21.01.06 21:45 |
|
Правиш си една аритметика и от полето с дата отделяш само тази част, която те интересува (ако е повече от едно число - съобразяваш старшинството).
След това така получения резултат го проверяваш да бъде между желаните ти.
За примерът ти, между стринговете
'04'..'31' са всички стрингове (и никои други):
'05000000'
'30999999'
Впрочем, за какво ти в бетуина да ти сравнява след флеша (може да си форматираш стринга в заявката без флеш)?
И защо питаш за дати, като са стрингове?
| |
Тема
|
Re: query na dati s between
[re: EFEX]
|
|
Автор |
salle (един такъв) |
Публикувано | 26.01.06 16:35 |
|
> за фунцията StrToDate имам впредвид функция която да ти връща датата в тип Integer
Ама ти не разбра ли, че той си пази датите като стрингове във формат
ден/месец/година ?
| |
Тема
|
Май човекът се интересува само от деня
[re: salle]
|
|
Автор |
NikB (любопитен) |
Публикувано | 27.01.06 09:57 |
|
Май човекът се интересува само от деня - аз така го разбрах - да селектира записите, в които денят е между две числа (от 5 до 30) за всеки месец.
| |
Тема
|
Re: Май човекът се интересува само от деня
[re: NikB]
|
|
Автор | EFEX (Нерегистриран) |
Публикувано | 27.01.06 10:10 |
|
"Ta zna4i vyprosa mi e kak da izvadq zapisite ot mysql-a mejdu dadenite 2 dati "
Много относително го е казал ама то няма значение, мисля че е същото... btw2date = btw2time
| |
|
|
|
|