2009-05-26 11 views

Respuesta

5

Puede escribir

select current_timestamp from tablename 

donde tablename es una tabla real en su base de datos.

El resultado de la consulta es solo la marca de tiempo actual.

+0

Gracias, pero con Hibernate hago session.createSQLQuery ("select current_timestamp from users") y obtengo lista vacía para .list() y null para .uniqueResult(). La tabla existe. Si pongo una tabla que no existe, obtengo java.sql.SQLException correctamente: Tabla no encontrada en la instrucción [select current_timestamp from qwerty] – cherouvim

+2

¿La tabla que está usando está vacía? por alguna razón, hice un par de pruebas y parece que si el resultado de la selección es una lista vacía, no tienes la marca de tiempo, si el resultado de la selección es una lista de filas, obtienes tantas marcas de tiempo como número de filas.. – alexdown

+2

Sé que esta es una pregunta antigua, pero si desea escribir código genérico (por ejemplo, en una biblioteca reutilizable), eso no depende de una base de datos específica, podría intentar usar algo como: 'SELECCIONAR TOP 1 current_timestamp FROM INFORMATION_SCHEMA.SYSTEM_TABLES' – Adam

8

@alexdown's answer es bastante correcto: en 1.8 necesita una relación de una fila para hacer esto, como Oracle DUAL o la tabla InterBase/Firebird RDB$DATABASE.

Cuando se mueve a la serie 2.0, sin embargo, usted será capaz de utilizar el constructor de "valores" SQL-99 sin depender de una relación de una sola fila:

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

Si necesita cambiar el nombre la columna de valores predeterminados específicos del proveedor que elige VALORES, siempre puede emplear un seleccionar: SELECT * FROM (VALUES (current_timestamp)) v(my_new_name)

3

Con HSQLDB 2.1 y posterior tiene todas las opciones.

Con la propiedad de conexión hsqldb.syntax_ora, hsqldb.syntax_pgs, hsqldb.syntax_mss o hsqldb.syntax_mys = true, puede utilizar los formularios admitidos por otras bases de datos. El SQL equivalente es SET DATABASE SQL SYNTAX ORA TRUE, y similar para otros dialectos.

El nativo, forma SQLStandard, con el apoyo de HSQLDB en todos los modos es la siguiente:

VALUES (CURRENT_TIMESTAMP) 
+1

1 para anotar el mimetismo de sintaxis – pilcrow

+0

En realidad es 'SET DATABASE SQL SYNTAX ORA TRUE'. Te estabas perdiendo el "SQL" @fredt. – BenCourliss

+0

gracias, corregido – fredt

19

En un selecto utilizo

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

Prefiero esta solución ya que no requiere que tenga ninguna tabla (para una prueba de conexión simple). –

3

Puede utilizar

CALL current_timestamp 

para recuperar la marca de tiempo actual. De acuerdo con una discusión en la lista de correo de HSQL, esto es mucho más eficiente que hacer una selección ficticia de INFORMATION_SCHEMA.SYSTEM_TABLES.

Cuestiones relacionadas