Поиск по диапазону

phpusershik

Using PHP
Шаг:
1) $sql1=Select SUBSTRING ('30/05/05',1,2) Это даст мне 30 (DD)
$sql2=Select SUBSTRING ('30/05/05',4,2) Это даст мне 05 (MM)
$sql3=Select SUBSTRING ('30/05/05',7,2) Это даст мне 05 (YY)

2)Concat (20$sql3,$sql2,$sql1)

А вот когда делаю конкатекацию как между ними поставить дефис?
 

Фанат

oncle terrible
Команда форума
кошмар.
что означает вот эта конструкция: $sql1=Select ?
 

phpusershik

Using PHP
Автор оригинала: Фанат
кошмар.
что означает вот эта конструкция: $sql1=Select ?
Но что высеивает SUBSTRING из базы я сразу ему присваиваю переменную что-бы потом с ним работать.
Но в статье написано без переменной, OOhhhh, да на все это у меня уйдет неделя что-бы разобратся.....
 

Фанат

oncle terrible
Команда форума
субстринги пиши внутри конката
и добавь туда ещё нули свои недостающие
 

phpusershik

Using PHP
Автор оригинала: Фанат
субстринги пиши внутри конката
и добавь туда ещё нули свои недостающие
Это так что ли:

Concat (20SUBSTRING ('30/05/05',7,2),SUBSTRING ('30/05/05',4,2),SUBSTRING ('30/05/05',1,2))

Да если так пойдёт то всю за всю ноч я не смогу закончить это,
если тебе не трудно подскажи пожалуйста код полностью, а то у меня там около 2000 записи и придется всё вручную менять....

-~{}~ 30.05.05 21:49:

Хорошо я всё вручную зделаю просто подскажи пожалуйста а как тогда будет уже поиск по диапазону в при условии что тип DATE и формат 'YYYY-MM-DD'?

-~{}~ 30.05.05 21:57:

До завтра :)
 

phpusershik

Using PHP
Автор оригинала: Фанат
select * from table where date BETWEEN '$date1' AND '$date2'
У меня из первой строки переменные передаются в таком формате:

'$date1' :

$yer1 , $mon1, $day1


'$date2' :

$yer2 , $mon2, $day2

и в запросе я их соединяю:
select * from table where date BETWEEN '$yer1-$mon1-$day1' AND '$yer2-$mon2-$day2'

Но вот в чём маленкий трабл когда выбран допустим диапазон 2005-05-29 -> 2005-05-31
он не находит потому-что на на следующий страницу передаются комбинация переменных без первых нулей в таком стиле:
2005-5-29 -> 2005-5-31
А с помощью чего можно заставит его что-бы он не убирал нули при передаче на другую страницу с переменных?
 

phpusershik

Using PHP
Автор оригинала: Tor
str_pad
А как лучше его внутри селекта вставлять так что ли:

select * from table where date BETWEEN '$yer1-str_pad($mon1, 2, '0', STR_PAD_LEFT)- str_pad($day1, 2, '0', STR_PAD_LEFT);' AND '$yer2-str_pad($mon2, 2, '0', STR_PAD_LEFT)- str_pad($day2, 2, '0', STR_PAD_LEFT);'
 

Фанат

oncle terrible
Команда форума
phpusershik
селек у тебя пишется на языке SQL
а функция str_pad - из языка пхп.
так что делать надо не в селекте, а до него. пр составлении твоих $date1 и 2
 

phpusershik

Using PHP
Но стараюсь вот так присваивать но без результата пока:

$date1 = $yer1-str_pad($mon1, 2, '0', STR_PAD_LEFT)-str_pad($day1, 2, '0', STR_PAD_LEFT)
$date2 = $yer2-str_pad($mon2, 2, '0', STR_PAD_LEFT)-str_pad($day2, 2, '0', STR_PAD_LEFT)

а потом уже их вставлю в:
select * from table where date BETWEEN '$date1' AND '$date2'
 

Tor

Новичок
$date1 = $yer1 ."-". str_pad($mon1, 2, '0', STR_PAD_LEFT) ."-". str_pad($day1, 2, '0', STR_PAD_LEFT)
 

phpusershik

Using PHP
Автор оригинала: Tor
$date1 = $yer1 ."-". str_pad($mon1, 2, '0', STR_PAD_LEFT) ."-". str_pad($day1, 2, '0', STR_PAD_LEFT)
ААА ты применил метод конкнтекации, :)

-~{}~ 31.05.05 12:01:

Он у меня в базе в формате DATE 'YYYY-MM-DD' а при выводе на экране хотелось бы увидеть в формате (DD-MM-YYYY) - '31-05-2005'.
Есть ли наподобие в пхп что меняет формат даты?
 
Сверху