Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264

Получение результата из БД по дате

14.04.2016, 12:24. Показов 1288. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица, у каждой строки есть 2 поля типа DATE: starts и ends
Есть задача, выводить результат из БД, который находится в диапазоне этих дат и зависит от текущей даты.
Никогда не делал такого, поэтому не знаю как сравнивать.
PHP
1
2
3
4
5
        $current_time = date('Y-m-d');
 
    $db->where ('starts', $current_time, "<=");
    $db->where ('ends', $current_time, ">=");
    $result = $db->getOne('period');
Возвращает
Notice: A non well formed numeric value encountered in C:\xampp\htdocs\oristats\consultant.php on line 43

Что, в принципе, логично. Как решить такую задачу? Либа БД класса - https://github.com/joshcam/PHP... base-Class
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2016, 12:24
Ответы с готовыми решениями:

Получение результата запроса 1C
Всем приве! Есть необходимость из C# подключитья к 1С и передать запрос (так как он используется в 1С) и на выходе получить результат....

Вызов ХП и получение результата
Есть ХП которая возвращает ид пользователя по паре ЛогинПароль. Если пользователя не нашло оно возвращает -1. Проверяя данную функцию...

Получение результата reintreted_cast
Здравствуйте , не могли б вы объяснить мне цепочку преобразований/получений значений , а то самому понять как получается такой результат я...

16
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
14.04.2016, 12:41
SQL
1
SELECT * FROM `my_table` WHERE `starts` <= CURDATE() AND `ends` >= CURDATE();
Добавлено через 1 минуту
Либо
SQL
1
SELECT * FROM `my_table` WHERE `starts` <= NOW() AND `ends` >= NOW();
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 12:45
Пифагор, у него codeigniter, там SQL генерируется фреймворком.

Jackky, вы неправильно вызываете методы формирования условия, пробуйте так:
PHP
1
2
3
4
5
$current_time = date('Y-m-d');
 
    $db->where('starts <=', $current_time);
    $db->where('ends >=', $current_time);
    $result = $db->getOne('period');
0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 12:48  [ТС]
quwy, Не работает
Fatal error: Problem preparing query (SELECT * FROM period WHERE starts <= = ? AND ends >= = ? LIMIT 1) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ? AND ends >= = ? LIMIT 1' at line 1 in C:\xampp\htdocs\oristats\lib\mysqliClass \MysqliDb.php on line 1085

Добавлено через 2 минуты
Я либу использую, хочется понять, как в ней делаь. По документации про мою задачу ничего не нашёл.
0
14.04.2016, 12:49

Не по теме:


Не учите фреймворки, учите архитектуру
Золотые слова и блестящий совет.

0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 12:51  [ТС]
Это не фреймворк, а библиотека с классом для работы mysqli. Но тут и правда банально незнание матчасти.

Добавлено через 1 минуту
Вот так таблица выдаёт результат, но неверный. Меняю локально время, а результат не меняется.
PHP
1
2
3
4
5
    $current_time = time();
 
    $db->where (TIME('starts'), $current_time, "<=");
    $db->where (TIME('ends'), $current_time, ">=");
    $result = $db->getOne('period');
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 12:54
Цитата Сообщение от Jackky Посмотреть сообщение
Это не фреймворк, а библиотека с классом для работы mysqli
Хм, тогда обращайтесь к документации по этой самой библиотеке. Или хотя бы назовите ее имя. Телепатов нет.
0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 12:54  [ТС]
quwy, вообще-то в первом сообщении указано)
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 12:58
Jackky, сорри, не заметил. Ребята явно вдохновлялись ангуляром (или наоборот).

Как насчет такого?
PHP
1
2
3
4
5
$current_time = time();
 
    $db->where ('starts', $current_time, "<=");
    $db->where ('ends', $current_time, ">=");
    $result = $db->getOne('period');
0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 13:00  [ТС]
quwy, нет, не работает

PHP
1
2
3
4
5
6
7
8
9
10
Array
(
    [0] => Array
        (
            [0] => SELECT  * FROM period WHERE  starts <= '1461146345'  AND ends >= '1461146345'  LIMIT 1
            [1] => 0.0002291202545166
            [2] => MysqliDb->getOne() >>  file "C:\xampp\htdocs\oristats\consultant.php" line #39 
        )
 
)
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 13:04
Запрос корректный. Какой тип данных у полей starts и ends?
0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 13:05  [ТС]
quwy, был DATE (писал в первом сообщении), сейчас решил сконвертировать в DATETIME
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
14.04.2016, 13:10
Jackky, тогда уж TIMESTAMP. В запросе фигурирует именно он.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 13:11
Лучший ответ Сообщение было отмечено Jackky как решение

Решение

Тогда так:
PHP
1
2
3
4
5
$current_time = time();
 
    $db->where ('starts <= FROM_UNIXTIME('.$current_time.')');
    $db->where ('ends >= FROM_UNIXTIME('.$current_time.')');
    $result = $db->getOne('period');
1
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 13:14  [ТС]
quwy, спасибо, заработало. Собственно либа или не либа, вопрос был скорее по матчасти, как сравнивать поля с датами. Я до этого хранил в бд тупо время в юниксе, но тут решил рефакторинг провести и сделать даты датами.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
14.04.2016, 13:18
Цитата Сообщение от Jackky Посмотреть сообщение
Я до этого хранил в бд тупо время в юниксе
Продолжали бы и дальше. Если секундной точности достаточно, но этот вариант ничем не хуже других.
0
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
14.04.2016, 13:20  [ТС]
Мне это важно для читабельности данных + мне нужно форматировать календарь, а с диапазоном дат это проще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2016, 13:20
Помогаю со студенческими работами здесь

Получение результата запроса
Делаю авторизацию. Пытаюсь получить имя пользователя, но не пашет. Наверное, неправильно рез-ты запроса обрабатываю. &lt;?php ...

SendMessage получение результата
Пытаюсь найти способ получать от запроса SendMessage Инициализирую функцию SendMessage так: public static extern int...

Pdo и получение результата
приветствую форумчане! надеюсь на Вашу помощь! знакомлюсь с pdo, навалял скриптик и не могу заставить работать $fio...

Получение результата в 2-й системе счисления
Подскажите,пожалуйста,как сделать чтобы при логической операции xor, у меня результат сохранялся в двоичном виде,например вот такое...

Получение результата POST-запроса
Здравствуйте! Недавно научился посылать POST-запросы через компонент IdHTTP. Вообщем-то результатом является страница html, сгенерированная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru