오류 때문에 일부 INTERVAL '-1' DAY
이다.
TIMESTAMP
DATE
리터럴에 DATE
INTERVAL
같은 연산 작업에 기간 begin
캐스팅 할 필요가 잘못이다. YYYY-MM-DD
이어야합니다. 또한 period 열 데이터 유형에 해당하는 TIMESTAMP
이어야합니다.
올바른 검색어는 다음과 같습니다.
nonsequenced validtime
UPDATE ABC
SET ef_dtm = PERIOD(begin(ef_dtm) + INTERVAL -'1' DAY, end(ef_dtm))
WHERE begin(ef_dtm) = TIMESTAMP '1999-12-31 00:00:00.000000';
또는
nonsequenced validtime
UPDATE ABC
SET ef_dtm = PERIOD(begin(ef_dtm) - INTERVAL '1' DAY, end(ef_dtm))
WHERE begin(ef_dtm) = TIMESTAMP '1999-12-31 00:00:00.000000';
DEMO
만들기 표 :
CREATE TABLE ABC (ef_dtm period(timestamp(6)) AS validtime) NO PRIMARY INDEX;
데이터 삽입 :
INSERT INTO abc(period (TIMESTAMP '1999-12-31 00:00:00.000000', TIMESTAMP '1999-12-31 23:59:00.000000'));
선택
ef_dtm
------------------------------------------------------------
('1999-12-31 00:00:00.000000', '1999-12-31 23:59:00.000000')
데이터 업데이트 후 :
nonsequenced validtime
UPDATE ABC
SET ef_dtm = PERIOD(begin(ef_dtm) + INTERVAL -'1' DAY, end(ef_dtm))
WHERE begin(ef_dtm) = TIMESTAMP '1999-12-31 00:00:00.000000';
ef_dtm
------------------------------------------------------------
('1999-12-30 00:00:00.000000', '1999-12-31 23:59:00.000000')
잘
SELECT
후에는 끝이 시작보다 커야하기 때문에 기간이 '/ 9천9백99분의 31 '12에서 시작 가질 수 없습니다. Btw, DATE 리터럴을 쓰는 신뢰할 수있는 방법은 단 하나뿐입니다. 현재 데이터베이스 기간 시작 날짜에있는 'DATE'9999-12-31'' – dnoeth이 기말 종료 날짜보다 작습니다.기간 종료일의 타임 스탬프는 23:59입니다. 이 기간 시작 날짜와 같은 날짜는 12/31/9999 00 : 00 : 00.000이고 기간 종료 날짜는 12/31/9999 23 : 59 : 00.0000입니다. 필요한 것은 기간 시작 날짜를 12/30/9999 00 : 00 : 00.0000으로 갱신하고 기간 종료 날짜는 그대로 유지할 수 있습니다. –