Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Манипуляции с датами


Автор: nicka 2.2.2004, 14:15
Допустим, у меня таблица с полем(time_enter) типа ДатаВремя, и я хочу выбрать записи, которые были введены не более часа назад.
Я себе представляю это так(для начала просто хочу увидеть результат):
Код
SELECT ('$today - time_enter) as cnt FROM persons WHERE id_per=13
,

где $today = date("Y-m-d H:i:s"); (это кусочек кода на php),
а time_enter - это поле в таблице, в котором храниться дата ввода записи

То есть должно выдать сколько секунд прошло с момента ввода записи.

Если взять конкретные цифры:
time_enter='02/02/2004 14:55:44',
$today = '2004-02-02 15:05:07',
то в результате запроса я получаю следующую цифру: -20040202143540,
которая мне лично ничего не напоминает.

Короче говоря, по-моему вопрос понятен, жду советов!

Автор: nicka 2.2.2004, 14:18
Код
SELECT ('$today' - time_enter) as cnt FROM persons WHERE id_per=13


забыла кавычку поставить, чтоб не начали мне искать ошибки в коде

Автор: [xoodo] 2.2.2004, 19:07
Вроде так:

SELECT * FROM table WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(time_enter)) <= 3600

3600 == 60 секунд * 60 минут. И без всяких $today'ов. Все проверки и преобразования в запросе.

И если даты хранить для последующих с ними операций, то я бы держал в базе не DATETIME, а TIMESTAMP(14). Сравни: '02/02/2004 14:55:44' и 20040202145544.

Автор: nicka 11.2.2004, 11:32
Да подходит, спасибо [xoodo]

Автор: Mor 11.2.2004, 11:42
А вот как отворматировать дату с 2004-02-11 11:21:43 на 11-02-2004 11:21:43

Автор: Master 11.2.2004, 11:53
Mor а зачем тебе понадобился еврейский вариант даты?

вообче есть функция http://www.php.net/explode - она поможет.

Автор: Mor 11.2.2004, 12:07
explode -слишком мутно.
каким нибудь mktime, возможно?

Автор: MuToGeN 11.2.2004, 19:01
Цитата
explode -слишком мутно.
Тогда substr(), for, continue, да и в целом понятия о переменных и массивах.

ЗЫ всего и сразу не бывает

Автор: IZ@TOP 12.2.2004, 00:57
MuToGeN, ты прав. пользуйтесь функцией time() совместно с функцией date()!

Автор: Mor 12.2.2004, 07:38
Всё окозалось проще:
SELECT DATE_FORMAT(send_date, '%d-%m-%Y %h:%i:%s') AS...
Я же из мускула её тащу smile.gif

Автор: Dagger 15.2.2004, 15:25
Mor, как вариант SELECT UNIX_TIMESTAMP(date) FROM blablabla..
$udate = ("m j Y h:m:s",$row[0]);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)