Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка наличия даты
Форумы портала PHP.SU » » Вопросы новичков » Проверка наличия даты

Страниц (1): [1]
 

1. vlados - 19 Апреля, 2012 - 22:07:34 - перейти к сообщению
Привет!

У меня есть такая структура таблицы:
+-------------------------------+
id date_in date_out
1 2012-04-07 2012-04-03
2 2012-04-19 2012-04-30
3 2012-04-01 2012-04-23
4 2012-04-01 2012-04-23
5 2012-04-01 2012-04-23
6 2012-04-01 2012-04-23
7 2012-04-01 2012-04-23

Естественно все даты разные, мне было лень их писать.
Так вот, диапазон дат строится от date_in до date_out.

Я делаю запрос в бд с датой(date_in), а скрипт проверяет наличие этой даты в диапазонах всех дат, во всех строках.

Как мне это сделать? Есть ли готовые решения?
2. avtor.fox - 19 Апреля, 2012 - 22:22:37 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table`
  2. WHERE `date`
  3. REGEXP '^2012-([0-9]{2})-23$'


Как по другому - не знаю.
3. kappa - 20 Апреля, 2012 - 00:00:43 - перейти к сообщению
Можно так:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title,date FROM TABLE WHERE date BETWEEN " 2012-04-01" AND "2012-04-07"
4. avtor.fox - 20 Апреля, 2012 - 00:16:55 - перейти к сообщению
kappa пишет:
Можно так:

По докам вариант отличный Фотографирую

Но всё равно не тягаться ему с sql date и php time Улыбка
5. vlados - 20 Апреля, 2012 - 00:37:23 - перейти к сообщению
А как мне проверить, есть ли дата которую я решил проверить в БД(в диапазоне) или нет?
6. sergtka4ov - 20 Апреля, 2012 - 01:12:40 - перейти к сообщению
Когда-то делал так:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. WHERE DAYOFYEAR(ВВЕДЕННАЯ ДАТА)>DAYOFYEAR(date_in) AND DAYOFYEAR(ВВЕДЕННАЯ ДАТА)<DAYOFYEAR(date_out)
  3.  


http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nction_dayofyear
DAYOFYEAR(date) Returns the day of the year for date, in the range 1 to 366.
mysql> SELECT DAYOFYEAR('2007-02-03');
-> 34
7. vlados - 20 Апреля, 2012 - 12:15:08 - перейти к сообщению
Спасибо.

Подскажите как мне сделать такое.

В переменных у меня есть даты( date_in и date_out )
И есть таблица в бд
CODE (SQL):
скопировать код в буфер обмена
  1. id date_in date_out
  2. 1 2012-04-07 2012-04-03
  3. 2 2012-04-19 2012-04-30
  4. 3 2012-04-01 2012-04-23
  5. 4 2012-04-01 2012-04-23
  6. 5 2012-04-01 2012-04-23
  7. 6 2012-04-01 2012-04-23
  8. 7 2012-04-01 2012-04-23


И мне надо проверить есть ли уже дата между date_in и date_out или нет.


PHP:
скопировать код в буфер обмена
  1. $date_in = "2013-04-07";
  2. $date_out =  "2014-04-30";


Этот вариант пройдет так как , одна или несколько дат присутствуют в этом диапазоне в таблице.


PHP:
скопировать код в буфер обмена
  1. $date_in = "2011-04-07";
  2. $date_out =  "2014-04-30";


Этот вариант не пройдет так как, одна или несколько дат отсутствуют в этом диапазоне в таблице.
8. vlados - 20 Апреля, 2012 - 14:47:13 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(*) FROM orders WHERE DAYOFYEAR($date_in)>DAYOFYEAR(date_in) AND DAYOFYEAR($date_out)<DAYOFYEAR(date_out)


Какая вот тут ошибка и может ли работать этот код под мои нужды?
9. vlados - 20 Апреля, 2012 - 17:57:26 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.         $query = mysql_query("SELECT (CASE
  2.         WHEN '$date_in' > `date_in` AND '$date_out' > `date_out` THEN '1'
  3.         ELSE '0' END) AS res FROM orders WHERE number = $number");     
  4.         $num = mysql_fetch_object($query)->res;
  5.        
  6.        
  7.         if($num=='1'){
  8.                 $gestapa=1;
  9.         }else{
  10.                 $gestapa=0; echo "Ooops.";
  11.         }
  12.  

Есть данный код.
И он неправильно работает..
Где в нем ошибка?
(Добавление)
??????? Хм
10. sergtka4ov - 22 Апреля, 2012 - 03:01:07 - перейти к сообщению
[quote=vlados]
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(*) FROM orders WHERE DAYOFYEAR($date_in)>DAYOFYEAR(date_in) AND DAYOFYEAR($date_out)<DAYOFYEAR(date_out)



DAYOFYEAR() тебе не подойдет, так как "2013-04-07" и "2012-04-07" и "2014-04-07" будут равны

 

Powered by ExBB FM 1.0 RC1