![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
вот столкнулся с задачей. и никак не могу решить как лучше сделать.
хотелось бы сделать на стороне сервера процедурой но как её писать я просто пока не могу представить. но это так в перспективе. задача. есть таблица со столбцами par1, par2, par3, data1 (тип date), time1 (тип time), val1 (тип float). необходимо выбрать значения интервале -+15 минут ближайшей к указанной дате. то есть запрос получается что то вроде запроса из дельфи. Код:
дата начала dat и vrem дата конечного интервала dat_1 и vrem_1 эти даты высчитываются от заданной даты пользователем в программе. как составить запрос что бы он вернул одну строку ближайшую к дате и времени указанной пользователем.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 06.07.2012 в 11:32. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Что-то типа вычисляемого поля с ABS разницы даты-времени заданной и из таблицы, ORDER по этой разнице с DESC и LIMIT 1. Предполагаю, что MySQL может реализовать такое вычисляемое поле
Добавил - DESC лишний
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 06.07.2012 в 11:50. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Аватар, как обычно, в точку! +1
p.s. возможно что можно поможет даже запрос Код:
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
напомните как составить запрос , точнее соединить дату и время в mysql.
ДатаВремя1=data1+time1 но как это в запросе сделать? а остальной запрос после from без изменений? просто вся эта задача выплыла из того что время и дата хранятся в разных столбцах, а не едином столбце датавремя. из за этого и получилось длинное условие на дату и время.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
очень всё сильно зависит от того, В КАКОМ формате у Вас хранится data1 и time1...
я бы посмотрел в сторону TIMESTAMP(expr1,expr2) да и посмотрите функции MySQL для работы с датой/временем - тут или тут... |
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
как писалось выше данные находятся в формате date и time
Цитата:
Код:
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я бы начал с того, что попробовал, что возвращает запрос:
Код:
|
![]() |
![]() |
![]() |
#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. Причина: конец рабочего дня и недели :) |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Я бы пошел в таком направлении
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#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 |