我需要今天curdate
所有的所有条目......
curdate
的类型为timestamp
。
当然我在Google搜索了这个,但我认为我使用了错误的关键字。
select * from ftt.element fee, ftt.plan p
where p.id=ftt.p_id and curdate ???
order by p_id, curdate desc;
你能提供给我吗?
答案 0 :(得分:3)
SYSDATE
返回Oracle中的当前日期和时间。 DATE
列还包含Oracle中的时间部分 - 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
而不是WHERE
子句中的隐式连接。
如果您需要处理不同的时区(例如因为curdate
是timestamp with time zone
),那么您可能希望使用CURRENT_TIMESTAMP
(包括时区)而不是{{ 1}}
答案 1 :(得分:3)
这个答案与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;
答案 2 :(得分:0)
有基本的日间功能。这里有几个:
getDate()
Now()
在不知道你的DBMS的情况下,我不能说哪个特别适用
答案 3 :(得分:0)
到目前为止,无论你做了什么都非常麻烦!!!!我在上面的查询中做的是你正在尝试加入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();在触发查询之前。 希望它会对你有所帮助。