我花了几个小时在网上搜索这个问题的答案。。以下是我目前拥有的:
select * from order_header oh where tran_date = sysdate-1
a2mppw5e1#
用途:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
参考:TRUNC在tran_date上调用函数意味着优化器将无法使用与之关联的索引(假设存在)。一些数据库,如Oracle,支持基于函数的索引,允许对数据执行函数以最小化这种情况下的影响,但IME DBA不允许这些。我同意-在这种情况下,他们真的没有必要。
tran_date
7z5jn7bk2#
trunc(tran_date) = trunc(sysdate -1)
w51jfk4q3#
如果你不支持未来日期的交易,那么像这样的东西可能会起作用:
AND oh.tran_date >= trunc(sysdate-1)
8wtpewkr4#
to_char(tran_date, 'yyyy-mm-dd') = to_char(sysdate-1, 'yyyy-mm-dd')
vkc1a9a25#
这篇评论是给那些已经找到这篇文章但正在使用mysql而不是oracle的读者的!在mysql上,你可以做以下事情:今天
SELECT * FROM WHERE date(tran_date) = CURRENT_DATE()
昨天
SELECT * FROM yourtable WHERE date(tran_date) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
ia2d9nvy6#
如果你想要昨天的时间戳,可以这样做:
(CURRENT_TIMESTAMP - INTERVAL '1' DAY)
6条答案
按热度按时间a2mppw5e1#
用途:
参考:TRUNC
在
tran_date
上调用函数意味着优化器将无法使用与之关联的索引(假设存在)。一些数据库,如Oracle,支持基于函数的索引,允许对数据执行函数以最小化这种情况下的影响,但IME DBA不允许这些。我同意-在这种情况下,他们真的没有必要。7z5jn7bk2#
w51jfk4q3#
如果你不支持未来日期的交易,那么像这样的东西可能会起作用:
8wtpewkr4#
vkc1a9a25#
这篇评论是给那些已经找到这篇文章但正在使用mysql而不是oracle的读者的!在mysql上,你可以做以下事情:今天
昨天
ia2d9nvy6#
如果你想要昨天的时间戳,可以这样做: