2009-05-26 18 views
16

Oracle:hsqldb'de "select current_timestamp" nasıl yapılır?

select systimestamp from dual 

MySQL:

select current_timestamp 

SQL Server:

select current_timestamp 

PostgreSQL:

sorudur
select current_timestamp 

, nasıl alabilirim HSQLDB geçerli zaman damgası? Ben Sen tablename veritabanınızda gerçek tablodur

select current_timestamp from tablename 

yazabilir sürümü 1.8.0.10

cevap

5

kullanın.

Sorgunun sonucu yalnızca geçerli zaman damgasıdır.

+0

Hazır, ancak hazırda beklemediğim session.createSQLQuery ("current_timestamp kullanıcılardan seçin") ve .list() için boş liste alıyorum ve .uniqueResult() için null. Tablo var. Var olmayan bir tabloya koyarsam doğru olarak java.sql.SQLException olsun: Tablo ifadesinde bulunamadı [select current_timestamp from qwerty] – cherouvim

+2

boş kullandığınız tablo mu? bir sebepten dolayı birkaç test yaptım ve eğer seçimin sonucu boş bir liste ise, zaman aralığının sonucunun bir satır listesi olması durumunda, zaman damgasını alamayacağınız görülüyor. satır sayısı.. – alexdown

+2

Bunun eski bir soru olduğunu biliyorum, ancak genel bir kod yazmak istiyorsanız (örneğin yeniden kullanılabilir bir kitaplıkta), belirli bir veritabanına bağlı değildir, SELECT TOP 1 current_timestamp FROM sözdizimi taklitçiliği belirterek yönelik tablename' – Adam

8

@alexdown's answer oldukça haklıdır - 1.8'in altında Oracle'ın DUAL veya InterBase/Firebird tablosu gibi bir satırlık ilişki gerekir.

Eğer 2.0 serisine taşıdığınızda, ancak, tek satır ilişkisi bağımlılığı olmadan, SQL-99 "DEĞERLER yapıcı" kullanmak mümkün olacak: Yeniden adlandırmak gerekirse

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

VALUES öğesinin seçtiği satıcıya özgü varsayılanlar sütunu, her zaman aşağıdakileri kullanabilirsiniz: SELECT * FROM (VALUES (current_timestamp)) v(my_new_name)

3

HSQLDB 2.1 ve üstü ile tüm seçenekleriniz vardır.

Bağlantı özelliği hsqldb.syntax_ora, hsqldb.syntax_pgs, hsqldb.syntax_mss veya hsqldb.syntax_mys = true ile diğer veritabanları tarafından desteklenen formları kullanabilirsiniz. Eşdeğer SQL SET DATABASE SQL SYNTAX ORA TRUE ve diğer lehimler için benzerdir. Ben Sen

CALL current_timestamp 

almak için kullanabileceğiniz

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

1 den 'seçme COALESCE (max (current_timestamp()), current_timestamp()): Tablo boş olsaydı INFORMATION_SCHEMA.SYSTEM_TABLES' – pilcrow

+0

Aslında 'SET DATABASE SQL SYNTAX ORA TRUE'. "SQL" @fredt eksik. – BenCourliss

+0

teşekkürler, düzeltilmiş – fredt

19

:

, tüm modlarda HSQLDB tarafından desteklenen SQLStandard formu, bu yerli geçerli zaman damgası. HSQL posta listesi ile ilgili bir tartışmaya göre bu, INFORMATION_SCHEMA.SYSTEM_TABLES'dan bir kukla seçim yapmaktan çok daha verimlidir.

+0

Bu çözümü tercih ediyorum çünkü herhangi bir tabloya sahip olmamı gerektiriyor (düz bağlantı testi için). –

3

kullanmak seçkin olarak

VALUES (CURRENT_TIMESTAMP)