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



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

Atm他使用这个查询Oracle:

SELECT vt_sysdate() FROM dual;

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

那么,有没有一种方法可以让这个查询在每个数据库上运行(也许可以为每个数据库创建一个双表(。或者,是否有一个查询可以获取在任何数据库上工作的系统日期时间?

谢谢你的帮助。

不,我不这么认为,因为Oracle坚持怪异,而MS SQL似乎根本不支持标准的current_date

MySQL接受SELECT current_date;,不理解VALUES

PostgreSQL接受SELECT current_date;VALUES

MS SQL似乎根本不理解current_date

Oracle理解current_date,但不理解没有FROM的标量查询。

来自维基百科:

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

您可以尝试current_timestamp而不是current_date,因为这似乎是支持的最佳选项。顺便说一句,如果没有某种翻译层,编写与供应商无关的SQL似乎基本上是不可能的。

感谢大家的支持。

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

我们将不得不在我们使用的任何数据库上创建一个伪表dual,就像本博客中建议的那样。一个包含1列和1条记录的伪表。

谢谢大家。

相关内容

  • 没有找到相关文章

最新更新