Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Показать оставшееся время при помощи MYSQL в моей задаче
 
 автор: pavluxa09   (09.07.2011 в 15:47)   письмо автору
 
 

Добрый день. В таблице имеется два поля: update_date - дата обновления записи (значение DATETIME), duration_minutes - через какое количество минут нужно обновлять (значение INT).
Необходимо составить MYSQL запрос, который показывает все записи с моей таблицы + добавляет новую колонку before_end_time типа INT. Сама колонка показывает сколько минут осталось до того, как с момента update_date пойдёт duration_minutes.

У меня не получается это сделать так как я не совсем понимаю как работать со временем в MYSQL. Пожалуйста помогите, заранее спасибо!

  Ответить  
 
 автор: cheops   (09.07.2011 в 15:58)   письмо автору
 
   для: pavluxa09   (09.07.2011 в 15:47)
 

Можно начать отталкиваться от следующего запроса
SELECT update_date + INTERVAL duration_minutes MINUTE FROM tbl;

  Ответить  
 
 автор: pavluxa09   (10.07.2011 в 08:56)   письмо автору
 
   для: cheops   (09.07.2011 в 15:58)
 

В результате долгих измучений получил код:

SELECT *, (last_bet_date + INTERVAL duration_minutes MINUTE) as end_date, (last_bet_date + INTERVAL duration_minutes MINUTE - NOW()) as before_end_seconds FROM `tbl_auction_games` ORDER By `duration_minutes` DESC


Но в нём проблема, поле before_end_seconds по идее должно хранить количество секунд, место этого оно хранит строку вида количество_часовколичество_секунд. Как исправить? Оно неправильно отнимает NOW()

  Ответить  
 
 автор: cheops   (10.07.2011 в 11:49)   письмо автору
 
   для: pavluxa09   (10.07.2011 в 08:56)
 

Нет, к секундам явно нужно приводить при помощи функции UNIX_TIMESTAMP()
SELECT *, (last_bet_date + INTERVAL duration_minutes MINUTE) as end_date,
(UNIX_TIMESTAMP(last_bet_date + INTERVAL duration_minutes MINUTE) - UNIX_TIMESTAMP()) as before_end_seconds
FROM `tbl_auction_games`
ORDER By `duration_minutes` DESC

  Ответить  
 
 автор: pavluxa09   (10.07.2011 в 15:11)   письмо автору
 
   для: cheops   (10.07.2011 в 11:49)
 

Большое спасибо, Вы настоящий программист!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования