Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ / 25 сообщений из 27, страница 1 из 2
16.07.2014, 17:49
    #38698226
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
есть таблица= ДАТА
в ней данные записаны так: 01.01.2014 16:00
тоесть вместе записана и дата и время через пробел

нужно сделать выборку за три месяца, но не просто все подряд, а все, что попало в интервал времени с 12:00 до 14:00 по времени.

Я так понимаю, что это как-то должен быть селект в селекте, но пока не выходит
мне это представляется так:
СЕЛЕКТ * ИЗ таблицыДАТА (
СЕЛЕКТ интервал дат (
СЕЛЕКТ интервал времени) )

подскажите, если не сложно
спасибо!
...
Рейтинг: 0 / 0
16.07.2014, 17:59
    #38698237
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterне просто все подряд, а все, что попало в интервал времени с 12:00 до 14:00 по времени.
Код: plaintext
select * from t extract(hour from cast( this_strange_string_field||':00' as date ) ) between :a and :b;
...
Рейтинг: 0 / 0
16.07.2014, 18:00
    #38698239
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Ованес Сусанянzhenya-jesterне просто все подряд, а все, что попало в интервал времени с 12:00 до 14:00 по времени.
Код: plaintext
select * from t  WHERE  extract(hour from cast( this_strange_string_field||':00' as date ) ) between :a and :b;
PS. Поправел.
...
Рейтинг: 0 / 0
16.07.2014, 18:38
    #38698284
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
А тупо сделать CAST to TIME не позволяет что?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.07.2014, 19:30
    #38698315
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Dimitry SibiryakovА тупо сделать CAST to TIME не позволяет что?..а чё у него с диалектом там ? (не помню просто, в первом или в третьем - там где-то кастовать в time вроде бы нельзя ?
...
Рейтинг: 0 / 0
17.07.2014, 09:33
    #38698590
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Таблоид,

В первом нельзя. Но не кастовать нельзя, а просто типа TIME нет.
...
Рейтинг: 0 / 0
17.07.2014, 09:39
    #38698596
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Ованес Сусанян
Код: plaintext
select * from t  WHERE  extract(hour from cast( this_strange_string_field||':00' as date ) ) between :a and :b;
ему ещё по дате надо, то есть примерно так
Код: sql
1.
2.
select * from t WHERE extract(hour from cast( this_strange_string_field||':00' as time ) ) between :a and :b
and cast( this_strange_string_field as date ) between :c and :d;
...
Рейтинг: 0 / 0
17.07.2014, 09:57
    #38698613
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Client SQL dialect 1 does not support reference to TIME datatype.
...
Рейтинг: 0 / 0
17.07.2014, 09:59
    #38698618
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterClient SQL dialect 1 does not support reference to TIME datatype.вырезай часы тем же сабстрингом и делай приведение к интеджеру, бетвин отработает всё равно.
...
Рейтинг: 0 / 0
17.07.2014, 10:24
    #38698648
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
select * from (
select sum, datesss from TABLICA where datesss between '01.01.2014' and '1.04.2014')

тут только по диапазону дат выбирает, а надо бы еще и по диапазону времени с 12:00 до 13:00

мысль:
тут можно не в одном запросе сделать, а к примеру в трех, тоесть за каждый месяц отдельный и только по времени, может так проще будет
...
Рейтинг: 0 / 0
17.07.2014, 10:44
    #38698668
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterselect * from (
select sum, datesss from TABLICA where datesss between '01.01.2014' and '1.04.2014')

тут только по диапазону дат выбирает, а надо бы еще и по диапазону времени с 12:00 до 13:00

мысль:
тут можно не в одном запросе сделать, а к примеру в трех, тоесть за каждый месяц отдельный и только по времени, может так проще будет

Если очень хочется то можно.

зы. И чего это так тянет на использование select from select
pps/ вот здесь 16316418 полностью приведен запрос который тебе нужен,
тебе осталось только с типами данных разобраться
...
Рейтинг: 0 / 0
17.07.2014, 13:24
    #38699001
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
посоветуйте книгу по этой теме - буду учиться
потому как поверхностно я понимаю, но шаг влево и все....
для меня ДЕЛФИ намного проще, а тут слишком много операторов, которые можно по разному расставить
...
Рейтинг: 0 / 0
17.07.2014, 13:46
    #38699034
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterпосоветуйте книгу по этой теме - буду учиться
Data Definition Guide
Language Reference
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.07.2014, 14:03
    #38699066
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterпосоветуйте книгу по этой теме - буду учиться

Мартин Грубер "Понимание SQL"
...
Рейтинг: 0 / 0
17.07.2014, 17:05
    #38699453
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Ура, вышло )))))))))))

select * from (
select summm, datesssss from TABLICA
where (datessssk>='01.01.2014' and datessss<='30.06.2014')
and (extract (hour from datessssk)>=16 and extract (hour from datessss)<=18)
and tip=8)

теперь выбирает интервал по дате и тут же чтоб попало в интервал по времени ))

ну или можно разбить на три запроса, по каждому месяцу отдельно


П.С.
а можно как-то указать не через ЕКСТРАКТ ЧАСЫ, а точное время... например с 12:30 до 13:10 ?
...
Рейтинг: 0 / 0
17.07.2014, 17:19
    #38699476
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterselect * from (
select summm, datesssss from TABLICA
where (datessssk>='01.01.2014' and datessss<='30.06.2014')
and (extract (hour from datessssk)>=16 and extract (hour from datessss)<=18)
and tip=8)

теперь выбирает интервал по дате и тут же чтоб попало в интервал по времени ))

Зачем селект в в селект обернул???
как-то вот так
Код: sql
1.
2.
3.
4.
 select summm, datesssss from TABLICA
    where datessssk between  date '01.01.2014' and  date '30.06.2014'
       and extract (hour from datessssk) between 16 and 18
       and tip=8


zhenya-jesterну или можно разбить на три запроса, по каждому месяцу отдельно

Это уже от твоей задачи зависит
zhenya-jesterП.С.
а можно как-то указать не через ЕКСТРАКТ ЧАСЫ, а точное время... например с 12:30 до 13:10 ?

вот здесь подсказывали 16314359
...
Рейтинг: 0 / 0
17.07.2014, 17:21
    #38699479
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterа можно как-то указать не через ЕКСТРАКТ ЧАСЫ, а точное время...
например с 12:30 до 13:10 ?
Поменяй клиентский диалект на третий, а потом см.выше про CAST().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.07.2014, 20:42
    #38699679
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterну или можно разбить на три запроса, по каждому месяцу отдельновсё зависит от задачи, о чём уже сказали.
можно сделать примерно так
Код: sql
1.
2.
3.
4.
5.
select summm, extract (month from datessssk) as m, datessssk from TABLICA
where (datessssk>='01.01.2014' and datessss<='30.06.2014')
and (extract (hour from datessssk)>=16 and extract (hour from datessss)<=18)
and tip=8
order by 2


да и строки с >= <= указывают на интервал, для этого есть отдельное слово between, то есть выглядеть будет примерно так
Код: sql
1.
2.
3.
4.
5.
select summm, extract (month from datessssk) as m, datessssk from TABLICA
where datessssk between '01.01.2014' and '30.06.2014'
and extract (hour from datessssk) between 16 and 18
and tip=8
order by 2

крайние значения включаются в выборку
а вообще книгу тебе сказали, да и на сайте есть не только форум
http://www.sql.ru/articles/articles.aspx?g=SQL&s=0
и даже
http://www.sql.ru/docs/sql/u_sql/
...
Рейтинг: 0 / 0
17.07.2014, 21:10
    #38699706
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
первый диалект и минуты.
наверное так прокатит
Код: sql
1.
2.
3.
4.
5.
select summm, extract (month from datessssk) as m, datessssk from TABLICA
where datessssk between '01.01.2014' and '30.06.2014'
and (cast(extract (hour from datessssk) as DOUBLE PRECISION) + (60/(cast(extract (minute from datessssk) as DOUBLE PRECISION)) between :tFrom and :tTo
and tip=8
order by 2

tFrom и tTo тоже в десятичную дробь свести
...
Рейтинг: 0 / 0
17.07.2014, 21:11
    #38699707
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
тьфу, наоборот
Код: sql
1.
2.
3.
4.
5.
select summm, extract (month from datessssk) as m, datessssk from TABLICA
where datessssk between '01.01.2014' and '30.06.2014'
and (cast(extract (hour from datessssk) as DOUBLE PRECISION) + ((cast(extract (minute from datessssk) as DOUBLE PRECISION)/60) between :tFrom and :tTo
and tip=8
order by 2
...
Рейтинг: 0 / 0
21.07.2014, 08:48
    #38701505
zhenya-jester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
ого, нифигасе, даже математически можно в ескюэле работать ? ))
а КАСТ он часы+минуты во что преобразует ? в какой форме видит их ? а,б или а:б или как ?
...
Рейтинг: 0 / 0
21.07.2014, 13:17
    #38701877
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
zhenya-jesterого, нифигасе, даже математически можно в ескюэле работать ? ))а почему нет?
zhenya-jesterа КАСТ он часы+минуты во что преобразует ? в какой форме видит их ? а,б или а:б или как ?cast преобразует типы, в моём примере в тип DOUBLE PRECISION (примерно float, если так понятнее). реально тип DATE - ни что иное как число с плавающей точкой. впрочем преобразования посмотри сам, кого и во что и как можно.
с точки зрения более простой работы с временем и датой тебе совет уже дали, приведи БД в 3 диалект.
...
Рейтинг: 0 / 0
21.07.2014, 13:39
    #38701909
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Hello, Roadster!
You wrote on 21 июля 2014 г. 13:37:57:

Roadster> реально тип DATE - ни что иное как число с плавающей точкой.
реально это не совсем так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.07.2014, 13:44
    #38701911
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
Мимопроходящийреально это не совсем так.может быть.
но я пару раз использовал это замечательное свойство DATE в богомерзком оракле
...
Рейтинг: 0 / 0
21.07.2014, 14:18
    #38701964
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ
roadsterя пару раз использовал это замечательное свойство DATE в богомерзком оракле

Вот только там DATE тоже всё что угодно, но не double. Фактически единственное место где
она таки double это Delphi.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SELECT в интервале ДАТЫ и интервале ВРЕМЕНИ / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]