SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.02.2009 14:06:25

Dimouse
Участник
Зарегистрирован: 21.02.2009
Сообщений: 4

Работа с датой и временем.Помогите пожалуйста разобраться!!!

Многоуважаемые программисты,специалисты!Помогите начинающему чайнику.

В базе есть заявки на разное время и дату.Нужно выбрать только на сегодняшний день и последние шесть часов.И сортировка по ближайшему времени.Трудности возникают при переходе на следующий день и при сортировке.

20:15 Иванов С.П.
20:45 Петров Б.И.
21:20 Сидоров М.Т.
00:20 Мишин А.В.
01:00 Попов Ф.Г.
07:00 Егоров Л.Д.

Заранее очень благодарен!!!

Неактивен

 

#2 21.02.2009 15:00:22

coin
Гуру
Зарегистрирован: 15.07.2008
Сообщений: 66

Re: Работа с датой и временем.Помогите пожалуйста разобраться!!!

Примеры действительны при условии, что поле `dt` типа DATETIME или TIMESTAMP:

Сегодняшний день, но только последние 6 часов от текущего времени:

SELECT * FROM `tbl` WHERE `dt`>=CURRENT_DATE AND `dt`>=NOW()-INTERVAL 6 HOUR ORDER BY `dt`



Сегодняшний день + 6 часов до начала текущих суток:
SELECT * FROM `tbl` WHERE `dt`>=CURRENT_DATE-INTERVAL 6 HOUR ORDER BY `dt`



Последние 6 часов от текущего времени:
SELECT * FROM `tbl` WHERE `dt`>=NOW()-INTERVAL 6 HOUR ORDER BY `dt`



Если в таблице дата и время хранятся в разных столбцах, то нужно сортировать по обоим:
ORDER BY `date`,`time`

Неактивен

 

#3 21.02.2009 15:18:28

Dimouse
Участник
Зарегистрирован: 21.02.2009
Сообщений: 4

Re: Работа с датой и временем.Помогите пожалуйста разобраться!!!

Большое вам спасибо!

Поля TIME и DATE,но я переделаю.

Спасибо!

Неактивен

 

#4 21.02.2009 17:08:25

Dimouse
Участник
Зарегистрирован: 21.02.2009
Сообщений: 4

Re: Работа с датой и временем.Помогите пожалуйста разобраться!!!

Уважаемый COIN огромное спасибо за подсказку.Колонку date я преобразовал в TIMESTAMP и время сортирует теперь правильно,но показывает заявки на все будущие дни.На 25,27,сегодня 21.

$result =mysql_query("SELECT DISTINCT right(date,8) AS time,id,name FROM zaks  WHERE
date>=CURRENT_DATE AND date>=NOW()-INTERVAL 6 HOUR ORDER BY date",$db);

и в этой конструкции тоже...

$result =mysql_query("SELECT DISTINCT right(date,8) AS time,id,name FROM zaks  WHERE date >=NOW()-INTERVAL 6 HOUR ORDER BY  date ",$db);

Может я где-то ошибку допустил..?
Заранее благодарен!

Неактивен

 

#5 21.02.2009 17:19:32

coin
Гуру
Зарегистрирован: 15.07.2008
Сообщений: 66

Re: Работа с датой и временем.Помогите пожалуйста разобраться!!!

Последние 6 часов и до текущего времени:

WHERE `date` BETWEEN NOW()-INTERVAL 6 HOUR AND NOW()


Последние 6 часов и до конца текущих суток:
WHERE `date` BETWEEN NOW()-INTERVAL 6 HOUR AND CURRENT_DATE+INTERVAL 1 DAY

Отредактированно coin (21.02.2009 17:20:06)

Неактивен

 

#6 21.02.2009 17:38:38

Dimouse
Участник
Зарегистрирован: 21.02.2009
Сообщений: 4

Re: Работа с датой и временем.Помогите пожалуйста разобраться!!!

Большое спасибо!Всё работет.

$result =mysql_query("SELECT DISTINCT right(date,8) AS time,id,name FROM zaks WHERE date BETWEEN NOW()-INTERVAL 6 HOUR AND CURRENT_DATE+INTERVAL 1 DAY ORDER BY date",$db);

Всех с наступающим военным праздником!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson