Дорогие специалисты!
Как сформировать запрос «Вывести информацию из таблицы с (Дата Время) по (Дата Время)».
Есть таблица TBL, в которой кроме кучи полей есть поле Data (в формате Y.M.D) и поле Time в формате (H:M:S).
Какой SQL запрос должен быть, что бы выводить информацию,
например, с дата=‘2008.11.01’ время=‘10:12:11’ по дата=‘2009.10.12’ время=‘23:12:11’.
Спасибо!
P.S
Простите за детский сад
Примитивный SQL запрос С (Дата время) по (Дата Время)
[syntax=sql]
select
*
from
yourtable
where
datacolumn between "2008.11.01" and "2009.10.12"
and timecolumn between "10:12:11" and "23:12:11" [/syntax]
select
*
from
yourtable
where
datacolumn between "2008.11.01" and "2009.10.12"
and timecolumn between "10:12:11" and "23:12:11" [/syntax]
Даже самый дурацкий замысел можно воплотить мастерски
Sasha8111 писал(а):Есть таблица TBL, в которой кроме кучи полей есть поле Data (в формате Y.M.D) и поле Time в формате (H:M:S).
Странно, что дата и время хранятся в разных полях. Если нужно сохранять момент "времени на оси времени", то понятно, что это должно быть единое комбинированное поле. Так как в противном случае поле "время" без поля "дата" все равно не имеет никакого смысла.Sasha8111 писал(а):с дата=‘2008.11.01’ время=‘10:12:11’ по дата=‘2009.10.12’ время=‘23:12:11’.
На практике, конечно, можно придумать такую задачу, где поле "время" само по себе может иметь смысл. Но, разумеется, отличный от фиксировании "некоторого момента на оси времени". Например, при описании некоторых ежедневных событий. Скажем, время открытия и закрытия магазина.
В связи с этим фраза "с дата=‘2008.11.01’ время=‘10:12:11’ по дата=‘2009.10.12’ время=‘23:12:11’." может иметь двоякий смысл. Если надо найти все, что между этими двумя точками, то вариант AiK, конечно, не подходит. Т.к, не найдет, например, дата=‘2008.12.01’ время=‘09:00:00’. Тут надо писать примерно следующее:
Код: Выделить всё
SELECT * FROM
yourtable WHERE
(datacolumn BETWEEN "2008.11.02" AND "2009.10.11") OR
(datacolumn = "2008.11.01" AND timecolumn >= "10:12:11") OR
(datacolumn = "2009.10.12" AND timecolumn <= "23:12:11")
-
- Сообщения: 22
- Зарегистрирован: 24 мар 2009, 13:25
- Откуда: St.Petersburg
AiK абсолютно прав.
---
Пардон
Да, это не верно))
---
Можно конкатенировать дату и время, и сравнивать как строки символов.
Еще можно сделать View, в котором колонки дата и время слиты в одну,
и работать с этим view
---
Пардон
Да, это не верно))
---
Можно конкатенировать дату и время, и сравнивать как строки символов.
Еще можно сделать View, в котором колонки дата и время слиты в одну,
и работать с этим view
Странного в раздельном хранении даты и времени нет. Много средств разработки имеют отдельные типы данных для даты и для времени. На это есть очень много достойных причин. Ты и сам об одной пишешь - не всем надо знать точную дату события.BBB писал(а):Странно, что дата и время хранятся в разных полях. Если нужно сохранять момент "времени на оси времени", то понятно, что это должно быть единое комбинированное поле. Так как в противном случае поле "время" без поля "дата" все равно не имеет никакого смысла.
На практике, конечно, можно придумать такую задачу, где поле "время" само по себе может иметь смысл. Но, разумеется, отличный от фиксировании "некоторого момента на оси времени". Например, при описании некоторых ежедневных событий. Скажем, время открытия и закрытия магазина.
Ошибкой считать, что время без даты мало кому нужно. Очень и очень даже нужно.
Банальный пример, открутка баннеров на этом сайте.


--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
Будь проще! Время тебя скоре всего вообще не должно беспокоить. Если у тебя "дата", то это дата! Времени у него как бы и нет.Sasha8111 писал(а):Дорогие специалисты!
Как сформировать запрос «Вывести информацию из таблицы с (Дата Время) по (Дата Время)».
...
Какой SQL запрос должен быть, что бы выводить информацию,
например, с дата=‘2008.11.01’ время=‘10:12:11’ по дата=‘2009.10.12’ время=‘23:12:11’.

Тогда так и без between!
select * from x where '01.11.2008' < дата and дата <= '12.10.2009'
Конечно, если в твоём аргументе "дата" есть время, то... легче его оттуда вычленить и затем писать sql
Конкатенация полей даты + время не есть хорошо.