我需要在 Oracle SQL Developer 上测试 sql 查询。 这些查询包含以下格式的时间戳文字
{ts 'yyyy-mm-dd hh:mm:ss.fff'}
Oracle SQL Developer 似乎不接受此语法,符号
{
会导致错误 ORA-00911:无效字符。
有什么我可以做的吗?
编辑
sql编辑器建议我不允许使用
{
。
我尝试使用其他两个工具(DbVisualizer 和 DBeaver),都使用 Oracle Thin 驱动程序,一切正常。
但是我仍然想在 Oracle SQL Developer 中使用该语法,因为它具有有趣的功能。 我必须测试的查询不是我编写的,更改语法不是一个选项。
使用实际的 SQL 时间戳文字:
TIMESTAMP 'yyyy-mm-dd hh:mm:ss.fff'
您使用的是 JDBC 转义语法,它受 JDBC 驱动程序支持,但 Oracle 数据库本身不支持。
您可以使用
CAST
select to_char(cast(sysdate as timestamp),'DD-MON-YYYY HH24:MI:SS.FF') from dual
查看答案:如何在oracle中将日期转换为时间戳(DD-MON-YYYY HH24:MI:SS.FF格式)?
“{ts xxx}”语法特定于 ODBC 或 OLEDB 驱动程序...
在 Oracle SQL 中以特定格式
{ts 'yyyy-mm-dd hh:mm:ss.fff'}
使用时间戳文字时出现问题。大括号 {}
不是标准 SQL 语法,可能会导致您遇到的错误。
您可以使用标准 ANSI SQL 时间戳文字格式,无需花括号。以下是格式化时间戳文字的方法:
TIMESTAMP 'yyyy-mm-dd hh:mm:ss.fff'
示例
SELECT * FROM tablename WHERE timestampcolumn >= TIMESTAMP '2023-08-29 12:34:56.789';
如果您正在使用的查询是使用特定的
{ts 'yyyy-mm-dd hh:mm:ss.fff'}
语法编写的,您可能需要将其替换为标准 ANSI SQL 时间戳文字格式,以确保与 Oracle SQL 的兼容性。