|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.07.2012, 11:30 | #1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
MySQL ближайшая дата к указанной
вот столкнулся с задачей. и никак не могу решить как лучше сделать.
хотелось бы сделать на стороне сервера процедурой но как её писать я просто пока не могу представить. но это так в перспективе. задача. есть таблица со столбцами par1, par2, par3, data1 (тип date), time1 (тип time), val1 (тип float). необходимо выбрать значения интервале -+15 минут ближайшей к указанной дате. то есть запрос получается что то вроде запроса из дельфи. Код:
дата начала dat и vrem дата конечного интервала dat_1 и vrem_1 эти даты высчитываются от заданной даты пользователем в программе. как составить запрос что бы он вернул одну строку ближайшую к дате и времени указанной пользователем.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 06.07.2012 в 11:32. |
06.07.2012, 11:46 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Что-то типа вычисляемого поля с ABS разницы даты-времени заданной и из таблицы, ORDER по этой разнице с DESC и LIMIT 1. Предполагаю, что MySQL может реализовать такое вычисляемое поле
Добавил - DESC лишний
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 06.07.2012 в 11:50. |
06.07.2012, 11:54 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Аватар, как обычно, в точку! +1
p.s. возможно что можно поможет даже запрос Код:
|
06.07.2012, 12:04 | #4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
напомните как составить запрос , точнее соединить дату и время в mysql.
ДатаВремя1=data1+time1 но как это в запросе сделать? а остальной запрос после from без изменений? просто вся эта задача выплыла из того что время и дата хранятся в разных столбцах, а не едином столбце датавремя. из за этого и получилось длинное условие на дату и время.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
06.07.2012, 13:53 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
очень всё сильно зависит от того, В КАКОМ формате у Вас хранится data1 и time1...
я бы посмотрел в сторону TIMESTAMP(expr1,expr2) да и посмотрите функции MySQL для работы с датой/временем - тут или тут... |
06.07.2012, 15:11 | #6 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
как писалось выше данные находятся в формате date и time
Цитата:
Код:
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
|
06.07.2012, 15:59 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я бы начал с того, что попробовал, что возвращает запрос:
Код:
|
06.07.2012, 16:49 | #8 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
создал таблицу и сделал к ней запрос
Код:
'2012-06-30 23:50:44', '2012-07-01 00:00:00', '20355674', '2954.76' '2012-06-30 23:59:02', '2012-07-01 00:00:00', '20356532', '2954.92' '2012-07-01 00:07:21', '2012-07-01 00:00:00', '20121422', '2955.08' видим что нужная строка это строка со значением '2012-06-30 23:59:02','2954.92' так как заданная дата '2012-07-01 00:00:00' теперь ставим условие мин Код:
'70764956.000000', '2012-06-30 23:50:44', '2012-07-01 00:00:00', '20355674', '2954.76' это не то что надо. где намудрил я? а ну нафиг всё до понедельника пошёл отдыхать
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 06.07.2012 в 16:49. Причина: конец рабочего дня и недели :) |
06.07.2012, 17:23 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Я бы пошел в таком направлении
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.07.2012, 08:16 | #10 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
Проверил. не работает так как задумано было.
Код:
'721.000000', '2012-07-01 00:07:21', '2955.08' '70764098.000000', '2012-06-30 23:59:02', '2954.92' '70764956.000000', '2012-06-30 23:50:44', '2954.76' как видим, почему то не сортирует результат по вычисленному полю. может как то не правильно пользуюсь функцией? ой, то есть сортирует но вычисляет не то. нужное нам число больше на 5 порядков чем минимальное.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 09.07.2012 в 08:27. Причина: чего то не проснулся. и неправельно поглядел. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi MySQL - криво вводится дата в таблицу. | iskurt | Помощь студентам | 10 | 13.06.2012 21:00 |
Дата в mysql | Mortimoro | PHP | 2 | 18.04.2012 20:45 |
Ближайшая точка к курсору | Claster | Помощь студентам | 11 | 27.07.2011 17:29 |
Вычитание дат(дата-дата=кол.дней) | zallza | Общие вопросы Delphi | 1 | 31.05.2010 22:50 |
Ближайшая точка к заданной. Язык си | MirandaX | Помощь студентам | 6 | 26.05.2009 18:25 |