查询以获取每个数据库的日期时间

时间:2014-03-26 02:15:56

标签: sql oracle postgresql datetime

我的朋友问我是否有办法使用1个查询来选择日期时间并将其用于任何数据库。

他对Oracle使用此查询:

SELECT vt_sysdate() FROM dual;

我知道双表仅适用于Oracle。但他想对其他数据库使用相同的查询,例如PostgreSQL。

有没有办法让这个查询在每个数据库上运行(也许通过为每个数据库创建一个双表)。或者是否有查询来获取适用于任何数据库的系统日期时间?

谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

From wikipedia

  • Firebird有一个单行系统表RDB $ DATABASE,其使用方式与Oracle的DUAL相同,但它也有自己的含义。
  • IBM DB2有一个视图,可在使用Oracle兼容性1
  • 时解析DUAL
  • Microsoft Access:可以创建名为DUAL的表,并通过ADO强制执行单行约束2
  • MySQL允许在不需要任何表格数据的查询中将DUAL指定为表格。3
  • PostgreSQL:可以添加DUAL视图以方便从Oracle移植。4
  • SQLite:可以按如下方式创建名为“dual”且与Oracle“双”表相同的VIEW:“CREATE VIEW dual AS SELECT'x'AS dummy;”
  • SAP HANA有一个名为DUMMY的表,其工作方式与Oracle“双”表相同。

您可以尝试使用current_timestamp而不是current_date,因为this appears to be the best-supported option。顺便说一下,编写供应商中立的SQL似乎是basically impossible而没有某种转换层。

答案 1 :(得分:2)

答案 2 :(得分:1)

感谢大家的支持。

在查看每个人的回答后,经过一段时间与我的朋友讨论后,我们得出结论,它不可能对所有数据库使用一个查询。所以我们创建一个函数,检查数据库,使用正确的函数来获取时间并返回它。

我们必须在this blog建议的任何数据库上创建一个双表虚拟表。一个包含1列和1条记录的虚拟表。

谢谢大家。