Как сделать "выбрать текущую метку времени" в 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 реальная таблица в базе данных.

результатом запроса является только текущая временная метка.


в выборе я использую

 SELECT CURRENT_DATE AS today, CURRENT_TIME AS now FROM (VALUES(0))

@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)