Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
interval [2018/03/20 14:24] seer [between/interval] |
interval [2018/03/20 14:37] seer [Источник] |
||
---|---|---|---|
Строка 10: | Строка 10: | ||
===== Формат ===== | ===== Формат ===== | ||
- | INTERVAL - это слово есть в MySQL, | + | <code sql> |
- | в Firebird такого слова нет, зато есть [[dateadd]] | + | <between_predicate> ::= |
+ | <psql_expr> BETWEEN <psql_expr> AND <psql_expr> | ||
+ | | <psql_expr> NOT BETWEEN <psql_expr> AND <psql_expr> | ||
+ | </code> | ||
===== Описание ===== | ===== Описание ===== | ||
- | я случайно создал эту страничку, не посмотрел что слово INTERVAL взято из MySQL, поэтому её можно удалить. | + | Используйте BETWEEN, чтобы проверить, находится ли значение в определенном диапазоне. |
===== Пример ===== | ===== Пример ===== | ||
- | Эти примеры работают только для MySQL | + | В диапазоне |
- | Примеры действительны при условии, что поле `dt` типа DATETIME или TIMESTAMP: | + | |
- | + | ||
- | Сегодняшний день, но только последние 6 часов от текущего времени: | + | |
<code sql> | <code sql> | ||
- | SELECT * FROM `tbl` WHERE `dt`>=CURRENT_DATE AND `dt`>=NOW()-INTERVAL 6 HOUR ORDER BY `dt` | + | SELECT * FROM `tbl` t WHERE t.id BETWEEEN 1 and 100 |
</code> | </code> | ||
- | Сегодняшний день + 6 часов до начала текущих суток: | + | аналог |
<code sql> | <code sql> | ||
- | SELECT * FROM `tbl` WHERE `dt`>=CURRENT_DATE-INTERVAL 6 HOUR ORDER BY `dt` | + | select * from 'tbl' t where t.id >= 1 and t.id ⇐ 100 |
</code> | </code> | ||
- | Последние 6 часов от текущего времени: | + | Вне диапазона |
<code sql> | <code sql> | ||
- | SELECT * FROM `tbl` WHERE `dt`>=NOW()-INTERVAL 6 HOUR ORDER BY `dt` | + | SELECT * FROM `tbl` t WHERE t.id NOT BETWEEEN 1 and 100 |
</code> | </code> | ||
- | Последние 6 часов и до текущего времени: | + | аналог |
<code sql> | <code sql> | ||
- | WHERE `date` BETWEEN NOW()-INTERVAL 6 HOUR AND NOW() | + | select * from 'tbl' t where NOT (t.id >= 1 and t.id ⇐ 100) |
</code> | </code> | ||
- | |||
- | Последние 6 часов и до конца текущих суток: | ||
- | <code sql> | ||
- | WHERE `date` BETWEEN NOW()-INTERVAL 6 HOUR AND CURRENT_DATE+INTERVAL 1 DAY | ||
- | </code> | ||
- | |||
===== См. также ===== | ===== См. также ===== | ||
[[dateadd]] | [[dateadd]] | ||
===== Источник ===== | ===== Источник ===== | ||
- | http://sqlinfo.ru/forum/viewtopic.php?id=1203 | + | http://www.janus-software.com/fbmanual/manual.php?book=psql&topic=80 |