Sql 使用时间戳上的过滤器更新

Sql 使用时间戳上的过滤器更新,sql,oracle,sql-update,Sql,Oracle,Sql Update,在几年没有sql oracle活动之后…我正在尝试按oracle sql上的日期更新一些状态代码。 日期为法文格式DD/MM/YYYY date_start列的格式为时间戳,格式为“18/10/2019 23:15:26”,我需要筛选日期-1个月。和sqlplus一起工作 我这样想: UPDATE contexte_ihm SET set status_code =1000 status_name = (select FLUX_STATUS_NAME from flux_status_ref

在几年没有sql oracle活动之后…我正在尝试按oracle sql上的日期更新一些状态代码。 日期为法文格式DD/MM/YYYY

date_start列的格式为时间戳,格式为“18/10/2019 23:15:26”,我需要筛选日期-1个月。和sqlplus一起工作

我这样想:

UPDATE contexte_ihm 
SET set status_code =1000 status_name = (select FLUX_STATUS_NAME from flux_status_ref where FLUX_STATUS_CD=1000)
WHERE status_code=9999 
AND DATE_START = TO_TIMESTAMP( '31/01/2000 08-00-00', 'DD/MM/YYYY HH24-MI-SS' )
DATE_START          DATE_END
------------------- -------------------
16/11/2019 15:04:54
我试过这个:

SELECT * FROM contexte_ihm WHERE status_code =1000 AND DATE_START =to_date('19/12/2019','dd/mm/yyyy')
  2  ;

no rows selected

使用
听起来你想要一系列的日期。我认为:

WHERE status_code = 9999 AND
      date_start < trunc(sysdate, 'MON') - interval '1 month' and
      date_start >= timestamp '2000-01-31 08:00:00';
其中status_code=9999和
开始日期=时间戳'2000-01-31 08:00:00';

您应该测试
SELECT
上的
WHERE
子句,以确保它得到正确的行。

听起来您想要一个日期范围。我认为:

WHERE status_code = 9999 AND
      date_start < trunc(sysdate, 'MON') - interval '1 month' and
      date_start >= timestamp '2000-01-31 08:00:00';
其中status_code=9999和
开始日期=时间戳'2000-01-31 08:00:00';

您应该测试
SELECT
上的
WHERE
子句,以确保它得到正确的行。

我尝试过,但出现了一些错误:

SQL> SELECT date_start, date_end FROM contexte_ihm
WHERE status_code = 9999 AND date_start < trunc(sysdate, 'MON') - interval '1 month' 
AND date_start >= timestamp '31/01/2000 08:00:00';

ORA-30089: <datetime field> missing or invalid
原来的命令比你给的返回的错误相同

SQL>desc contexte_ihm
 DATE_START  NOT NULL TIMESTAMP(6)
 DATE_END   TIMESTAMP(6)
 DATE_STATUS NOT NULL TIMESTAMP(6)

我试过了,但出了点问题:

SQL> SELECT date_start, date_end FROM contexte_ihm
WHERE status_code = 9999 AND date_start < trunc(sysdate, 'MON') - interval '1 month' 
AND date_start >= timestamp '31/01/2000 08:00:00';

ORA-30089: <datetime field> missing or invalid
原来的命令比你给的返回的错误相同

SQL>desc contexte_ihm
 DATE_START  NOT NULL TIMESTAMP(6)
 DATE_END   TIMESTAMP(6)
 DATE_STATUS NOT NULL TIMESTAMP(6)

日期或时间戳没有格式;默认情况下,客户端使用NLS设置将内部表示格式化为人类可读的格式。而
now()
不是Oracle函数;等价物是
sysdate
current\u date
;默认情况下,客户端使用NLS设置将内部表示格式化为人类可读的格式。而
now()
不是Oracle函数;等价物是
sysdate
current\u date