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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
vlados
Отправлено: 19 Апреля, 2012 - 22:07:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Привет!

У меня есть такая структура таблицы:
+-------------------------------+
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), а скрипт проверяет наличие этой даты в диапазонах всех дат, во всех строках.

Как мне это сделать? Есть ли готовые решения?
 
 Top
avtor.fox
Отправлено: 19 Апреля, 2012 - 22:22:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table`
  2. WHERE `date`
  3. REGEXP '^2012-([0-9]{2})-23$'


Как по другому - не знаю.
 
 Top
kappa
Отправлено: 20 Апреля, 2012 - 00:00:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011  


Помог: 3 раз(а)




Можно так:

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



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




kappa пишет:
Можно так:

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

Но всё равно не тягаться ему с sql date и php time Улыбка
 
 Top
vlados
Отправлено: 20 Апреля, 2012 - 00:37:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


А как мне проверить, есть ли дата которую я решил проверить в БД(в диапазоне) или нет?

(Отредактировано автором: 20 Апреля, 2012 - 00:39:42)

 
 Top
sergtka4ov
Отправлено: 20 Апреля, 2012 - 01:12:40
Post Id



Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2010  


Помог: 0 раз(а)

[+]


Когда-то делал так:

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

(Отредактировано автором: 20 Апреля, 2012 - 01:19:34)

 
 Top
vlados
Отправлено: 20 Апреля, 2012 - 12:15:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Спасибо.

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

В переменных у меня есть даты( 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";


Этот вариант не пройдет так как, одна или несколько дат отсутствуют в этом диапазоне в таблице.
 
 Top
vlados
Отправлено: 20 Апреля, 2012 - 14:47:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(*) FROM orders WHERE DAYOFYEAR($date_in)>DAYOFYEAR(date_in) AND DAYOFYEAR($date_out)<DAYOFYEAR(date_out)


Какая вот тут ошибка и может ли работать этот код под мои нужды?
 
 Top
vlados
Отправлено: 20 Апреля, 2012 - 17:57:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


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.  

Есть данный код.
И он неправильно работает..
Где в нем ошибка?
(Добавление)
??????? Хм

(Отредактировано автором: 20 Апреля, 2012 - 19:45:47)

 
 Top
sergtka4ov
Отправлено: 22 Апреля, 2012 - 03:01:07
Post Id



Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2010  


Помог: 0 раз(а)

[+]


[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" будут равны
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB