* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
centos 8 stream |
|
CUBRID 11.2 (11.2.3.0730-f0e52cb) (64bit release build for Linux) |
|
|
|
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
cubrid 10.2에서 unloaddb를 사용하여 자료를 백업하고 cubrid 11.2에 loaddb를 하면서 발생한 오류 입니다.
cubrid 10.2에서 unloaddb시 추출된 db명_objects 파일을 열어서 오류 난 부분을 찾아보니
insert 데이터에 TIMESTAMP '02:00:04 AM 03/08/2020' 이렇게 시간관련 부분을 찾았습니다.
cubrid 10.2에서 옮기는 테이블의 컬럼 type이 timestamp입니다.
sqlgate, csql 에서 쿼리를 날려봤습니다.
10.2 db에서는 정상적으로 나옵니다.
11.2 db에서는 아래와 같이 나옵니다.
SELECT timestamp '01:00:04 AM 03/08/2020' --> 2020-03-08 오전 1:00:04
SELECT TIMESTAMP '02:00:04 AM 03/08/2020' --> Error : [-494] Semantic: Invalid utime: '02:00:04 AM 03/08/2020'. select
SELECT timestamp '03:00:04 AM 03/08/2020' --> 2020-03-08 오전 3:00:04
02시는 전부 에러가 납니다.
제가 뭔가를 잘못한걸까요?
11.2에서 timestamp를 쓰면 안되는 건가요?
<추가>
여러각도로 select, insert 다해보고 있습니다.
SELECT TIMESTAMP '02:00:04 AM 03/08/2020'
여기서 3월9일로 바꾸니깐 성공합니다.
SELECT TIMESTAMP '02:00:04 AM 03/09/2020'
여기서 3월7일로 바꿔도 성공합니다.
SELECT TIMESTAMP '02:00:04 AM 03/07/2020'
년도를 바꿔도 성공합니다.
SELECT TIMESTAMP '02:00:04 AM 03/08/2021'
결국 2020년 3월 8일 오전 2시 00분 00초 ~ 오전 2시 59분 59초 이 데이터만 오류가 납니다.
무슨 문제일까요?
<추가>
SELECT UNIX_TIMESTAMP('2020-03-08 01:59:58') --> 1583650798
SELECT UNIX_TIMESTAMP('2020-03-08 01:59:59') --> 1583650799
SELECT UNIX_TIMESTAMP('2020-03-08 03:00:00') --> 1583650800
SELECT UNIX_TIMESTAMP('2020-03-08 03:00:01') --> 1583650801
2시 데이터가 없어요
<추가>
위쪽에 에러나던 2020년 3월 8일 오전 2시 00분 00초 ~ 오전 2시 59분 59초 이 데이터를 제외하고 다시 loaddb를 실행했는데 다시 에러가 나네요
SELECT UNIX_TIMESTAMP('01:59:58 AM 03/14/2021') --> 1615705198
SELECT UNIX_TIMESTAMP('01:59:59 AM 03/14/2021') --> 1615705199
SELECT UNIX_TIMESTAMP('03:00:00 AM 03/14/2021') --> 1615705200
SELECT UNIX_TIMESTAMP('03:00:01 AM 03/14/2021') --> 1615705201
여기도 2시 데이터가 없어요
더이상은 테스트가 무의미 하겠네요
답변부탁드립니다.
우선, 사용하시는 동일한 버전에서 올려주신 내용과 같이 테스트해봤으나 에러없이 수행이됩니다.
csql> SELECT UNIX_TIMESTAMP('2020-03-08 02:00:00');
=== <Result of SELECT Command in Line 1> ===
unix_timestamp('2020-03-08 02:00:00')
========================================
1583600400
----------------------------------------------------------------------
csql> SELECT UNIX_TIMESTAMP('2020-03-08 02:27:00');
=== <Result of SELECT Command in Line 1> ===
unix_timestamp('2020-03-08 02:27:00')
========================================
1583602020
----------------------------------------------------------------------
csql> SELECT TIMESTAMP '02:00:04 AM 03/08/2020';
=== <Result of SELECT Command in Line 1> ===
timestamp '02:00:04 AM 03/08/2020'
====================================
02:00:04 AM 03/08/2020
테스트용 테이블을 만들어 동일한 내용을 insert 후 select 해봤을때도 문제는 없었습니다.
csql> create table t_tb (a int, b timestamp);
Execute OK. (0.005187 sec) Committed. (0.003009 sec)
csql> insert into t_tb values (1,'02:00:04 AM 03/08/2020');
1 row affected. (0.007693 sec) Committed. (0.000005 sec)
csql> select * from t_tb;
=== <Result of SELECT Command in Line 1> ===
a b
========================================
1 02:00:04 AM 03/08/2020
1 row selected. (0.002636 sec) Committed. (0.000011 sec)
더 정확한 확인을 위해 문제가 되는 insert 쿼리를 올려주시면 확인해보도록 하겠습니다.