query na dati s between
7 отговора
477 прегледа
query na dati s between
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.
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
$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
Re: Ами то затова си има тип DATE
Като пазиш датите в CHAR или VARCHAR мъчи се сега
salle.online.bg/sig
salle.online.bg/sig
Re: Ами то затова си има тип DATE
Що за отговор "мъчи се". Като не можеш да помогнеш недей да пишеш глупави мнения.
Редактирано от Budah на
Re: Ами то затова си има тип DATE
Ако използваш DATE твоят BETWEEN оператор ще работи чудесно без нужда от допълнителни глупости.
А в твоя случай трябва първо да форматираш датите от твоите стрингове до DATE и чак тогава ще сработи при което естествено няма да може да използва индекс т.е. баааааавно
Най-доброто до което можеш да достигнеш е комбинация от STR_TO_DATE() и BETWEEN
Изобщо най-добре е да си преправиш таблицата.
Ако пък чак толкова те мързи да погледнеш в ръководството
.. WHERE STR_TO_DATE(data, '%d/%m/%Y') BETWEEN ....
И не се оплаквай, че е бавно. Виж по-горе защо.
salle.online.bg/sig
А в твоя случай трябва първо да форматираш датите от твоите стрингове до DATE и чак тогава ще сработи при което естествено няма да може да използва индекс т.е. баааааавно
Най-доброто до което можеш да достигнеш е комбинация от STR_TO_DATE() и BETWEEN
Изобщо най-добре е да си преправиш таблицата.
Ако пък чак толкова те мързи да погледнеш в ръководството
.. WHERE STR_TO_DATE(data, '%d/%m/%Y') BETWEEN ....
И не се оплаквай, че е бавно. Виж по-горе защо.
salle.online.bg/sig
Правиш си една аритметика
Правиш си една аритметика и от полето с дата отделяш само тази част, която те интересува (ако е повече от едно число - съобразяваш старшинството).
След това така получения резултат го проверяваш да бъде между желаните ти.
За примерът ти, между стринговете
'04'..'31' са всички стрингове (и никои други):
'05000000'
'30999999'
Впрочем, за какво ти в бетуина да ти сравнява след флеша (може да си форматираш стринга в заявката без флеш)?
И защо питаш за дати, като са стрингове?
След това така получения резултат го проверяваш да бъде между желаните ти.
За примерът ти, между стринговете
'04'..'31' са всички стрингове (и никои други):
'05000000'
'30999999'
Впрочем, за какво ти в бетуина да ти сравнява след флеша (може да си форматираш стринга в заявката без флеш)?
И защо питаш за дати, като са стрингове?
Re: query na dati s between
> за фунцията StrToDate имам впредвид функция която да ти връща датата в тип Integer
Ама ти не разбра ли, че той си пази датите като стрингове във формат
ден/месец/година ?
salle.online.bg/sig
Ама ти не разбра ли, че той си пази датите като стрингове във формат
ден/месец/година ?
salle.online.bg/sig
Май човекът се интересува само от деня
Май човекът се интересува само от деня - аз така го разбрах - да селектира записите, в които денят е между две числа (от 5 до 30) за всеки месец.
Re: Май човекът се интересува само от деня
"Ta zna4i vyprosa mi e kak da izvadq zapisite ot mysql-a mejdu dadenite 2 dati "
Много относително го е казал ама то няма значение, мисля че е същото... btw2date = btw2time
Много относително го е казал ама то няма значение, мисля че е същото... btw2date = btw2time