Sql 在Oracle中将日期与当前_日期进行比较
我无法获取此查询中的错误(ORACLE查询) 我得到了这个错误Sql 在Oracle中将日期与当前_日期进行比较,sql,oracle,Sql,Oracle,我无法获取此查询中的错误(ORACLE查询) 我得到了这个错误 ORA-00933: SQL command not properly ended 您的查询中有太多的dual 此外,在Oracle中,当前日期不是数据库的当前日期,而是会话的当前日期时间。虽然您的数据库服务器可能位于当前为晚上11点的时区,但您的PC上可能已经在第二天凌晨3点。无论何时在Oracle查询中发现当前日期,都很可能是错误的 在Oracle中,现在使用sysdate,今天使用trunc(sysdate) select
ORA-00933: SQL command not properly ended
您的查询中有太多的
dual
此外,在Oracle中,当前日期不是数据库的当前日期,而是会话的当前日期时间。虽然您的数据库服务器可能位于当前为晚上11点的时区,但您的PC上可能已经在第二天凌晨3点。无论何时在Oracle查询中发现当前日期
,都很可能是错误的
在Oracle中,现在使用sysdate
,今天使用trunc(sysdate)
select *
from hr.customer
where created_at = trunc(sysdate);
由于您已经知道该表并希望从中获取所有列,因此不需要使用双精度 双表是一种特殊的一行一列表,由 Oracle和其他数据库安装中的默认设置。在甲骨文中 表有一个名为DUMMY的VARCHAR2(1)列,其值为 “X”。它适用于选择伪列,例如 系统日期或用户 您可以只使用以下查询
SELECT *
FROM HR.CUSTOMER
WHERE CREATED_AT = current_date;
请删除
dual
并重试。您好,Oracle中有一个CURRENT_DATE函数,但它会根据客户端的时区返回当前日期和时间。SYSDATE返回服务器时区中的当前日期。但考虑到该字段名为“CREATED_AT”,我希望它能更好地填充SYSDATE,以使其在不同时区之间保持一致。顺致敬意,Felix@fhossfel:谢谢,菲利克斯,我不知道。因此,CURRENT_DATE
确实存在,但我们不太可能在这里使用它。谢谢你的解释。@ThorstenKettner虽然有评论解释了这一点,但我仍然认为这个答案值得编辑,因为它乍一看就令人困惑。@Line:谢谢。你是对的。我已经更正了我的答案。
SELECT *
FROM HR.CUSTOMER
WHERE CREATED_AT = current_date;