Sql 使用时间戳上的过滤器更新
在几年没有sql oracle活动之后…我正在尝试按oracle sql上的日期更新一些状态代码。 日期为法文格式DD/MM/YYYY date_start列的格式为时间戳,格式为“18/10/2019 23:15:26”,我需要筛选日期-1个月。和sqlplus一起工作 我这样想: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
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
。