如何在hsqldb中"选择current_timestamp"?

che*_*vim 16 sql database hsqldb embedded-database

甲骨文:

select systimestamp from dual
Run Code Online (Sandbox Code Playgroud)

MySQL的:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

SQL Server:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

PostgreSQL的:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

问题是,如何获取HSQLDB中的当前时间戳?我使用的是1.8.0.10版

小智 24

在我使用的选择中

 SELECT CURRENT_DATE AS today, CURRENT_TIME AS now FROM (VALUES(0))
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个解决方案,因为它不需要我有任何表(用于简单的连接测试)。 (2认同)

pil*_*row 10

@ alexdown的回答非常正确 - 在1.8下你需要一个单行关系才能做到这一点,比如Oracle DUAL或InterBase/Firebird RDB$DATABASE表.

但是,当您转到2.0系列时,您将能够使用SQL-99"VALUES构造函数"而不依赖于单行关系:

sql> VALUES (current_timestamp);
2010-04-22 15:22:40.997
Run Code Online (Sandbox Code Playgroud)

如果您需要从VALUES选择的特定于供应商的默认值重命名该列,您始终可以使用select: SELECT * FROM (VALUES (current_timestamp)) v(my_new_name)


Thi*_*kel 5

您可以使用

CALL current_timestamp
Run Code Online (Sandbox Code Playgroud)

检索当前时间戳。根据 HSQL 邮件列表上的讨论,这比从 中进行虚拟选择要高效得多INFORMATION_SCHEMA.SYSTEM_TABLES


ale*_*own 4

你可以写

select current_timestamp from tablename  
Run Code Online (Sandbox Code Playgroud)

其中tablename是数据库中的真实表。

查询的结果只是当前时间戳。

  • 我知道这是一个老问题,但是如果您想编写不依赖于特定数据库的通用代码(例如在可重用库中),您可以尝试使用类似以下内容的内容:`SELECT TOP 1 current_timestamp FROM INFORMATION_SCHEMA.SYSTEM_TABLES ` (3认同)
  • 您使用的表是空的吗?由于某种原因,我做了一些测试,似乎如果选择的结果是一个空列表,则没有时间戳,如果选择的结果是行列表,则获得的时间戳与行数.. (2认同)