Как сделать "выбрать текущую метку времени" в hsqldb?
Oracle:
select systimestamp from dual
MySQL:
select current_timestamp
SQL Server:
select current_timestamp
PostgreSQL:
select current_timestamp
вопрос, как я могу получить текущую метку времени в HSQLDB? Я использую версию 1.8.0.10
5 ответов
можно писать
select current_timestamp from tablename
здесь tablename
реальная таблица в базе данных.
результатом запроса является только текущая временная метка.
@alexdown это совершенно верно - под 1.8 вам нужно однорядное отношение, чтобы сделать это, например, Oracle DUAL
или InterBase / Firebird RDB$DATABASE
таблица.
однако при переходе к серии 2.0 вы сможете использовать SQL-99 "конструктор значений", не полагаясь на однорядное отношение:
sql> VALUES (current_timestamp);
2010-04-22 15:22:40.997
если вам нужно переименовать столбец из значений по умолчанию для конкретного поставщика, вы всегда можете использовать select:SELECT * FROM (VALUES (current_timestamp)) v(my_new_name)
можно использовать
CALL current_timestamp
для получения текущей метки времени. Согласно обсуждению в списке рассылки HSQL, это намного эффективнее, чем делать фиктивный выбор из INFORMATION_SCHEMA.SYSTEM_TABLES
.
С HSQLDB 2.1 и позже у вас есть все варианты.
С свойством соединения hsqldb.syntax_ora, hsqldb.syntax_pgs, hsqldb.syntax_mss или hsqldb.syntax_mys=true можно использовать формы, поддерживаемые другими базами данных. Эквивалентный SQL является SET DATABASE SQL SYNTAX ORA TRUE
и аналогично для других диалектов.
родная форма SQLStandard, поддерживаемая HSQLDB во всех режимах:
VALUES (CURRENT_TIMESTAMP)