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 :: помогите разобраться с DATETIME
Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
ситуация такая: в таблице есть столбец который должен содержать дату, создан был так (... , date DATETIME, ...) только тип без всяких доп. параметров, добавляю данные я такой командой (INSERT INTO t_name(date) VALUES("'.date("Y-j-n H:m:s").'") , вроде абсолютно в таком же формате, как и надо для этого типа...
а когда достаёшь данные то получаються одни нули (такие вот 0000-00-00 00:00:00)
ЗЫ думаю что это ещё при записи что то не соответствует и и поэтому записывается так, а когда достаёшь, то достаёться то всё корректно...
В чём моя проблема ?
EuGen
Отправлено: 29 Ноября, 2007 - 15:26:20
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
date("j") - возвращает день месяца без ведущих нулей. Поэтому вносится в базу нечто вроде "2007-2-01", что не есть правильно.
Нужно делать так:
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
T-Mon
Отправлено: 29 Ноября, 2007 - 15:47:25
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Может логичнее вообще хранить в базе абсолютное время в секундах со времен чего-то-там, а при необходимости конвертировать.
EuGen
Отправлено: 29 Ноября, 2007 - 15:57:51
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
А по-моему это и есть верх нелогичности
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
IOpeH
Отправлено: 29 Ноября, 2007 - 16:21:16
Частый гость
Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Цитата:
Может логичнее вообще хранить в базе абсолютное время
не мне надо именно такое,
работет NOW()
EuGen, может ещё поможешь , а то я тут совсем затупил...
есть у нас такой код
Цитата:
if(mysql_query('SELECT * FROM t_name WHERE ip LIKE "'.$_SERVER['REMOTE_ADDR'].'"') != TRUE) mysql_query('INSERT INTO t_name(ip) VALUES("'.$_SERVER['REMOTE_ADDR'].'");', $link);
почему то запрос на поиск ip выдаёт всегда TRUE не зависимо от того есть в таблице такой IP или нет
valenok
Отправлено: 29 Ноября, 2007 - 16:40:13
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
php.net/mysql_query
----- Truly yours, Sasha.
IOpeH
Отправлено: 29 Ноября, 2007 - 16:51:49
Частый гость
Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Цитата:
php.net/mysql_query
читал я уже , я всегда сначало стараюсь прочитать оф описание а потом попробовать и так и сяк , а уж только в самую последнюю очередь - задать вопрос на форуме
EuGen
Отправлено: 29 Ноября, 2007 - 19:03:54
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
mysql_query($query) в случае, если запрос был на выборку, вернет указатель на ресурс. Так что Ваше сравнение вообще бессмысленно.
Делайте так:
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
IOpeH
Отправлено: 29 Ноября, 2007 - 19:41:58
Частый гость
Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
да я и сам уже вроде понял , что там не TRUE OR FALSE , а как раз указатель на ресурс , а TRUE получаеться потому что значение не равно нулю ...
а EuGen, как всегда выручает...
и вообще респект тебе!
EuGen
Отправлено: 29 Ноября, 2007 - 19:51:09
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Сравнение "не получается", потому что оно у Вас "!=", а это значит, что php будет приводить типы данных, и это приведет их к тому, что, так как указатель - вполне определенная переменная, она будет посчитана как "равная" true.
Про сравнения советую почитать еще: http://php.su/learnphp/operators/?compar
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
T-Mon
Отправлено: 29 Ноября, 2007 - 23:44:11
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Почему? По-мойму, с таким форматом легче настраивать время относительно временных зон, при переходе на летнее время, при сравнении, сколько времени прошло от одного события до другого. В принципе, не факт, так как существует вероятность того, что в php существуют функции для удобной работы и с тем форматом, но я бы хранил все именно в этом, ибо он более гибок к применению.
EuGen
Отправлено: 30 Ноября, 2007 - 09:54:10
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Все зависит от задачи конечно, но хранение даты в целочисленном формате (наподобие UNIX_TIMESTAMP) обязывает каждый раз при работе с такой датой делать преобразования.
То есть, нужно что-то изменить в дате - извольте преобразовать в число сначала; нужно показать пользователю - извольте преобразовать число в дату.
Это, конечно, хорошо, что есть функции UNIX_TIMESTAMP(date) и FROM_UNIXTIME(timestamp, format) в MySQL, но в большинстве случаев придется применять еще другие функции форматирования/преобразования, то есть проделывать двойную работу.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
T-Mon
Отправлено: 30 Ноября, 2007 - 20:11:31
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Но не придется проделывать тройную работу, когда, например, нужно будет сколько дней\часов\минут\секунд прошло со времени одного события до другого, например, сколько времени прошло с последнего визита пользователя: отнял и преобразовал, а не 2 раза преобразовал, отнял и еще раз на вывод преобразовал...
valenok
Отправлено: 01 Декабря, 2007 - 02:20:46
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Смторя чзачем собсвенно вы записываете это время.
Для внутреннего использования -
извините посещать эту страницу чаще чем раз в пять минут нельзя
или для вывода -
последний раз на форуме вы были ..
----- Truly yours, Sasha.
T-Mon
Отправлено: 01 Декабря, 2007 - 13:05:48
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Вот именно: сколько времени прошло споследнего визита, создания темы, написания сообщения, скачивания и т.д. Еще удобно, если считать сколько времени человек провел на форуме.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.