oracle:查询具有可变日期的时间戳
Posted
技术标签:
【中文标题】oracle:查询具有可变日期的时间戳【英文标题】:oracle: query timestamp with variable dates 【发布时间】:2016-05-09 01:22:43 【问题描述】:在我的所有脚本中,我想查询 Oracle 以向我提供时间戳小于今天(今天上午 12 点)且大于最后一天(上午 12 点)的行 我已经想出了以下脚本:
WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (SELECT SYSTIMESTAMP FROM DUAL)
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (SELECT SYSTIMESTAMP - INTERVAL '2' DAY FROM dual)
但这并不是我想要的,因为它给出的行不是从上午 12 点开始,而是从当前时间开始。
我正在寻找一种将可变日期(每天的日期)和固定时间(上午 12 点)混合在一起的方法,因此我的查询将仅限于:
WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (today's date started at 12 am)
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (yesterday's date started at 12 am
【问题讨论】:
Oracle: How can I select records ONLY from yesterday?的可能重复 【参考方案1】:您不需要子查询来访问函数。我想你只想trunc()
:
WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= trunc(SYSTIMESTAMP) AND
DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= trunc(SYSTIMESTAMP - INTERVAL '2' DAY)
但是,我认为在第二种情况下应该是“1”天。
【讨论】:
是的,应该是一天。但是,如果脚本在 00:01 运行,那么间隔 -1 将不会指向最后一天。这是主要问题,我可以明确地说在这个日期从 00 开始执行查询,而上一个日期从 00 开始执行查询 但这给出了从昨天凌晨 12:01 到当前时间的结果。我希望它是从昨天的 12:00 到今天的 12:00。 @user1596226 。 . .不,trunc()
删除了时间组件。以上是关于oracle:查询具有可变日期的时间戳的主要内容,如果未能解决你的问题,请参考以下文章