我的朋友问我是否有办法使用1个查询来选择日期时间并将其用于任何数据库。
他对Oracle使用此查询:
SELECT vt_sysdate() FROM dual;
我知道双表仅适用于Oracle。但他想对其他数据库使用相同的查询,例如PostgreSQL。
有没有办法让这个查询在每个数据库上运行(也许通过为每个数据库创建一个双表)。或者是否有查询来获取适用于任何数据库的系统日期时间?
谢谢你的帮助。
答案 0 :(得分:3)
您可以尝试使用current_timestamp而不是current_date,因为this appears to be the best-supported option。顺便说一下,编写供应商中立的SQL似乎是basically impossible而没有某种转换层。
答案 1 :(得分:2)
不,我不这么认为,因为Oracle坚持认为很奇怪,而且MS SQL似乎根本不支持标准current_date
。
MySQL accepts SELECT current_date;
, doesn't understand VALUES
PostgreSQL accepts SELECT current_date;
or VALUES
MS SQL doesn't seem to understand current_date
at all
Oracle understands current_date
but not scalar queries without FROM
答案 2 :(得分:1)
感谢大家的支持。
在查看每个人的回答后,经过一段时间与我的朋友讨论后,我们得出结论,它不可能对所有数据库使用一个查询。所以我们创建一个函数,检查数据库,使用正确的函数来获取时间并返回它。
我们必须在this blog建议的任何数据库上创建一个双表虚拟表。一个包含1列和1条记录的虚拟表。
谢谢大家。