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

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

14.04.2016, 12:24. Показов 1269. Ответов 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
6855 / 3788 / 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
6855 / 3788 / 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
6855 / 3788 / 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
6855 / 3788 / 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
6855 / 3788 / 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
6855 / 3788 / 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
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru