![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
firebird
fantasy © (2006-06-25 02:31:00)Есть база данных. В ней 3 поля: F_NOMER, F_DATE, F_TIME
в таблице T_BILET.
Как выбрать
SELECT * FROM T_BILET
WHERE (F_DATE + F_TIME) + 3 (часа) > "NOW"
Не получается. Как выбрать SELECT, чтобы отобразились все поля за последние 3 часа?
PS: база данных FIREBIRD 2.0
( не могу рвзобраться с синтаксисом. Помогите собрать запрос)
Fantasy (2006-06-25 18:29:00) [1]Спосибо мастера!
sniknik (2006-06-25 15:35:00) [2]> 0.0416666666666667 число как вычислить ?
легко. ;) выполняеш в access(!!!)SELECT cDbl(TimeSerial(1, 0, 0))готово.
ну или в mssqlSELECT CAST(DATEADD(hh, 1, 0) AS Float)аналогично.
(в дату забивается час и выдается в числовом представлении)
ну не знаю я как в firebird с датами нормально работать ;о)).
> это что на чтоо деленое ?
1 на 24 как ни странно... ;о))
fantasy (2006-06-25 15:03:00) [3]0.0416666666666667число как вычислить ?
это что на чтоо деленое ?
fantasy (2006-06-25 14:36:00) [4]Большое спасибо за поддержку!
unknown (2006-06-25 11:02:00) [5]
> sniknik © (25.06.06 10:52) [3]
> во втором могли добавить
Не добавили к сожалению.
sniknik (2006-06-25 10:52:00) [6]> Переборщил. Можно еще проще :)
можно
SELECT * FROM T_BILET
WHERE (F_DATE+F_TIME+0.0416666666666667*3) > CURRENT_TIMESTAMP
хотя было бы лучше для данного случая хранить датувремя одним полем.
> PS: база данных FIREBIRD 2.0
во втором могли добавить нормальных функция работы с датами... типа как в mssql где вместо "дикого" числа (в примере = час) можно написать DATEADD(hh, 3, F_DATE+F_TIME), смотри в документацию и на сайт, что там добавлено.
unknown (2006-06-25 03:44:00) [7]Переборщил. Можно еще проще :)
SELECT * FROM T_BILET
WHERE
F_DATE=CURRENT_DATE AND
EXTRACT (HOUR FROM F_TIME)>=EXTRACT (HOUR FROM CURRENT_TIMESTAMP)-3
unknown (2006-06-25 03:41:00) [8]
SELECT * FROM T_BILET
WHERE
EXTRACT (YEAR FROM F_DATE)=EXTRACT (YEAR FROM CURRENT_TIMESTAMP)
AND
EXTRACT (MONTH FROM F_DATE)=EXTRACT (MONTH FROM CURRENT_TIMESTAMP)
AND
EXTRACT (DAY FROM F_DATE)=EXTRACT (DAY FROM CURRENT_TIMESTAMP)
AND
EXTRACT (HOUR FROM F_TIME)>=EXTRACT (HOUR FROM CURRENT_TIMESTAMP)-3