Сравнение двух значений времени из базы данных MySQL - PullRequest
2 голосов
/ 04 мая 2011

Я пытаюсь сравнить два набора раз, чтобы выяснить, совпадают ли они.Вот что у меня есть на данный момент ..

$sql = "SELECT * FROM schedule WHERE starttime>='$starttime' AND endtime<='$endtime' AND day='$updateday'";

Теперь это не работает, так как кажется, что вы не можете сравнивать значения времени ... поэтому я совершенно не уверен, как это можно сделать?

Ответы [ 5 ]

0 голосов
/ 29 октября 2015

Я выполнил оператор SELECT на phpmyadmin на sql, прежде чем пытаться сделать это на веб-странице, и это было здорово, дело в том, чтобы использовать его и думать об этом раньше:

CAST('the_value_you_want_to_be_compared', AS the_type_you_want_to_compare)

пример:

Если вы хотите сравнить дату дня и ваше имя таблицы: деятельности:

SELECT * FROM activities WHERE date = CAST('2015-10-29', AS date)

и так далее ...

0 голосов
/ 04 мая 2011

Предполагая, что вы используете ВРЕМЯ типа , ваш формат "10:00:00" должен работать.

Не похоже на вашу мать, но не забудьте параметризироватьВаш запрос после того, как он заработал.

0 голосов
/ 04 мая 2011

Я понимаю, что вы используете "время" для своего типа данных.Это не должно быть проблемой, поскольку вы МОЖЕТЕ сравнивать поля, используя тип «время».Возможно, вы захотите установить максимальный уровень отчетов об ошибках или вывести свой $ sql-статус непосредственно перед mysql_query, чтобы дважды проверить, что вы создаете запрос, который может возвращать результаты в первую очередь.Также убедитесь, что у вас есть действительный набор данных для вашего запроса в базе данных (он произошел со мной один раз во время отладки).

0 голосов
/ 04 мая 2011

Почему бы вам не использовать unix timestamp для сравнения?

$sql = "SELECT * FROM schedule WHERE UNIX_TIMESTAMP(starttime)>=$starttime AND UNIX_TIMESTAMP(endtime)<=$endtime AND day='$updateday'";

Также я думаю, что вы сравниваете строки, но я не уверен, что это сработает.

0 голосов
/ 04 мая 2011

Поля Datetime в MySQL хранятся как (например)

'2011-05-03 17: 01: 00'

так что вы должны быть в состоянии сделать что-то вроде

$starttime = date('Y-m-d H:i:s', $timestamp);

где $ timestamp - это отметка времени, которое вас беспокоит. Затем продолжите ваш запрос.

Вы можете создавать временные метки, используя mktime () или strtotime () (если начинается со строкового представления времени, например, из более раннего запроса MySQL), или просто time () для текущего времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...