Как сделать «выбрать current_timestamp» в hsqldb? - PullRequest
16 голосов
/ 26 мая 2009

Oracle:

select systimestamp from dual

MySQL:

select current_timestamp

SQL Server:

select current_timestamp

PostgreSQL:

select current_timestamp

Вопрос в том, как получить текущую метку времени в HSQLDB ? Я использую версию 1.8.0.10

Ответы [ 5 ]

24 голосов
/ 03 июля 2011

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

 SELECT CURRENT_DATE AS today, CURRENT_TIME AS now FROM (VALUES(0))
10 голосов
/ 22 апреля 2010

@ alexdown's answer совершенно прав - для версии 1.8 для этого требуется отношение из одной строки, например, Oracle DUAL или таблица InterBase / Firebird RDB$DATABASE.

Однако, когда вы перейдете к серии 2.0, вы сможете использовать SQL-99 «VALUES constructor», не полагаясь на однорядное отношение:

sql> VALUES (current_timestamp);
2010-04-22 15:22:40.997

Если вам нужно переименовать столбец из значений по умолчанию, определенных VALUES, выбранными поставщиком, вы всегда можете использовать команду select: SELECT * FROM (VALUES (current_timestamp)) v(my_new_name)

4 голосов
/ 26 мая 2009

Вы можете написать

select current_timestamp from tablename  

где tablename - реальная таблица в вашей базе данных.

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

3 голосов
/ 03 августа 2011

Вы можете использовать

CALL current_timestamp

для получения текущей метки времени. Согласно обсуждению в списке рассылки HSQL, это намного эффективнее, чем выборка из INFORMATION_SCHEMA.SYSTEM_TABLES.

.
3 голосов
/ 17 апреля 2011

В 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)
...