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

Форум MySQL

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

 

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

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

тема: Работа с датой в MYSQL: Сравнить дату + интервал с текущей датой
 
 автор: pavluxa09   (16.07.2011 в 00:14)   письмо автору
 
 

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

Имеется таблица AuctionGames, в ней есть две колонки PeriodMinutes - длительность аукциона в минутах (INT) и LastBetDate - дата и время последней ставки (DATETIME). Необходимо написать SQL запрос, который вернёт все строки у которых дата и время последней ставки + длительность аукциона в минутах меньше текущей даты и времени.

Я долго мучался, и дошел до следующих результатов:

SELECT * FROM `AuctionGames` WHERE (UNIX_TIMESTAMP(LastBetDate + INTERVAL PeriodMinutes MINUTE) - UNIX_TIMESTAMP()) < 0

Но этот вариант работает неверно!

Основная проблема в том, что если сейчас например 23 часа, а PeriodMinutes например 70 минут, то при сравнении получается расхождение в сутки.

Пожалуйста, помогите разобраться...

  Ответить  
 
 автор: cheops   (16.07.2011 в 10:40)   письмо автору
 
   для: pavluxa09   (16.07.2011 в 00:14)
 

А вы поступайте проще
SELECT * FROM `AuctionGames` 
WHERE (LastBetDate + INTERVAL PeriodMinutes MINUTE) < NOW()

  Ответить  
 
 автор: pavluxa09   (16.07.2011 в 17:46)   письмо автору
 
   для: cheops   (16.07.2011 в 10:40)
 

Например LasBetDate равно 2010-07-15 23:00:00 , а PeriodMinutes равно 70, то результатом (LastBetDate + INTERVAL PeriodMinutes MINUTE) будет 2010-07-16 00:10:00. А сейчас например 2010-07-16 10:00:00 , то результатом логического выражения 2010-07-16 00:10:00 < 2010-07-16 10:00:00 почему то будет FALSE.

  Ответить  
 
 автор: cheops   (16.07.2011 в 17:58)   письмо автору
 
   для: pavluxa09   (16.07.2011 в 17:46)
 

Не должно такого быть, у вас следующий запрос что возвращает?
SELECT  '2010-07-16 00:10:00' < '2010-07-16 10:00:00' FROM DUAL;

  Ответить  
 
 автор: pavluxa09   (16.07.2011 в 19:02)   письмо автору
 
   для: cheops   (16.07.2011 в 17:58)
 

1

  Ответить  
 
 автор: pavluxa09   (16.07.2011 в 19:02)   письмо автору
 
   для: cheops   (16.07.2011 в 17:58)
 

1

  Ответить  
 
 автор: cheops   (16.07.2011 в 19:09)   письмо автору
 
   для: pavluxa09   (16.07.2011 в 19:02)
 

Это TRUE, FALSE - 0.

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

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