Oracle SQL是否选择时间戳不超过1周的行?

Oracle SQL是否选择时间戳不超过1周的行?,sql,oracle,Sql,Oracle,我想在名为generic的表中的UPDATE\u TIME列中选择时间戳不到一周的所有行。根据前面的一个问题,我开发了这个脚本: select * from generic where 'UPDATE_TIME' < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK)) 我做错了什么 select * from generic where timestamp '1970-01-01 00:00:00' + numtodsinterval(upd

我想在名为
generic
的表中的
UPDATE\u TIME
列中选择时间戳不到一周的所有行。根据前面的一个问题,我开发了这个脚本:

select * from generic where 'UPDATE_TIME' < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))
我做错了什么

select *
from generic
where timestamp '1970-01-01 00:00:00' + numtodsinterval(update_time,'SECOND') > current_timestamp - interval '7' day
  • Oracle中没有
    unix\u timestamp()
    。这需要通过以下方式完成:

    timestamp '1970-01-01 00:00:00' + <number of seconds in epoch>
    
    正在做什么

  • Oracle中没有
    date\u sub
  • Oracle中没有
    now()
  • 'UPDATE\u TIME'
    是字符串文字而不是列名
但是,如果
update\u time
date
timestamp
列,则不需要进行整个转换:

select *
from generic
where update_time > current_timestamp - interval '7' day

哦,天哪,我错误地认为这个问题是在Oracle sql中,而实际上它是mysql!这会考虑到夏令时吗?我也需要在不同的时间里保持一致timezones@EvilWashingMachine当前位置我想那会奏效,但我不是100%肯定。也许
时间戳'1970-01-01 00:00:00'
部件需要转换为带时区的
时间戳才能工作。但这需要时间。我有一个不同的问题,谢谢你的回答!我投票赞成回答这个问题并指出我错在哪里。这很尴尬……我似乎误解了“大纪元”的含义……对不起!事实上,它是一个常规的时间戳,而不是纪元时间。
numtodsinterval(update_time,'SECOND') 
select *
from generic
where update_time > current_timestamp - interval '7' day