我需要curdate
今天的所有条目...
curdate
类型timestamp
。当然我在谷歌搜索过这个,但我认为我使用了错误的关键字。
select * from ftt.element fee, ftt.plan p
where p.id=ftt.p_id and curdate ???
order by p_id, curdate desc;
你能提供给我吗?
SYSDATE
返回 Oracle 中的当前日期和时间。在 Oracle 中,一DATE
列还包含一个时间部分——也是一TIMESTAMP
列。
为了检查“今天”,您必须删除两个值中的时间部分:
select *
from ftt.element fee
join ftt.plan p on p.id=ftt.p_id
where trunc(curdate) = trunc(sysdate)
order by p_id, curdate desc;
您还应该习惯于在子句中使用显式JOIN
s 而不是隐式连接。WHERE
如果您需要处理不同的时区(例如因为curdate
是 a timestamp with time zone
),那么您可能想要使用CURRENT_TIMESTAMP
(包括时区)而不是SYSDATE
这个答案与 a_horses_with_no_name 的答案非常相似。不同之处在于它执行得更快。在比较之前对列进行计算会降低性能。
select *
from ftt.element fee
join ftt.plan p on p.id=ftt.p_id
where curdate >= trunc(sysdate)
and curdate < trunc(sysdate + 1)
order by p_id, curdate desc;
有基本的日常功能。这里有一对:
getDate()
Now()
在不知道您的 DBMS 的情况下,我不能说哪个特别有用
到目前为止,您所做的一切都非常麻烦!!!!我从上述查询中得出的结论是您正在尝试加入 2 个表。首先加入2个表:
Select * from table1 join table2 on table1.id = table2.id;
现在要在此查询中包含任何条件,将其连接到上述查询之后:
Select * from table1 join table2 on table1.id = table2.id where curdate = date;
这里定义 date = CURDATE(); 在您触发查询之前。希望它会帮助你。