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

时间:2014-10-16 10:33:49

标签: sql oracle

我想在名为UPDATE_TIME的表中选择名为generic的列中时间戳小于一周的所有行。从之前的问题我开发了这个脚本:

select * from generic where 'UPDATE_TIME' < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))

但是这给了我这个错误:

ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Error at Line: 1 Column: 92

我做错了什么?

1 个答案:

答案 0 :(得分:2)

select *
from generic
where timestamp '1970-01-01 00:00:00' + numtodsinterval(update_time,'SECOND') > current_timestamp - interval '7' day
  • Oracle中没有unix_timestamp()。这需要使用:

    完成
    timestamp '1970-01-01 00:00:00' + <number of seconds in epoch>
    

    添加必须转换为interval类型的秒数。那是什么

    numtodsinterval(update_time,'SECOND') 
    

    正在做

  • Oracle中没有date_sub
  • Oracle中没有now()
  • 'UPDATE_TIME'是字符串文字而非列名

如果update_timedatetimestamp列,则无需进行整个转换:

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