해당 필드에 현재 일시를 숫자값으로 저장할려면 아래처럼 해보세요.
-- Delphi 기준일시
UPDATE gtitle SET gdate = current_timestamp - CAST('1899-12-30 00:00:00' AS timestamp) WHERE gidx='xxxxx';
-- Firebird 기준일시
UPDATE gtitle SET gdate = current_timestamp - CAST('1900-01-01 00:00:00' AS timestamp) WHERE gidx='xxxxx';
그런데 앞으로를 생각하면 왠만하면 날짜나 시간은 date 나 timestamp로 변환해서 사용하는게 좋을 것 같네요.
매번 저런식으로 처리를 하기도 그렇고 연산이 가해진다는 것 자체만으로도 시간이 소비되는 일이니까요. ^^
정환철 님이 쓰신 글 :
: 답변 정말 감사합니다.
: 날자나 시간을 변경할려고 합니다.
: "2015-05-29 13:29:57.9998"이런 형식을 42135.5624768499983 이런 형식으로 바꾸어 저장해야합니다.
: 필드 속성은 GDATE DECIMAL(18,8) DEFAULT 1,입니다.
:
: UPDATE gtitle SET gdate=timestamp WHERE gidx='xxxxx'
:
: 이렇게 하면 에러만 나오네요 ㅡ,.ㅡ;
:
:
:
:
:
:
: 박우성 님이 쓰신 글 :
: : TDateTime형은 1899년 12월 30일 0시를 기준으로 소숫점 위에는 날수를 소솟점 아래에는 시간으로 표현합니다.
: : firebird의 timestamp도 시작 날짜는 잘 모르겠지만, 소숫점 위에는 날수를 소숫점 아래에는 시간을 표현합니다.
: :
: : select cast( cast('1899-12-30' as timestamp) + 42135.5624768499983 as varchar(24) ) from rdb$database;
: :
: : 쿼리를 실행해 보면 "2015-05-11 13:29:57.9998" 이라는 varchar형을 얻을 수 있습니다.
: :
: : 위의 쿼리를 가지고 응용해 보세요.
: :
: :
: :
: : 정환철 님이 쓰신 글 :
: : : 답변 감사합니다.
: : : 개발툴을 사용하지 않고 데이터를 변환해서 사용할수 있을까요?
: : : 쿼리문에서 형식을 변환해서 사용할 수있는 방법이 없을까요?
: : : 필드 속성은
: : : GDATE DECIMAL(18,8) DEFAULT 1,
: : : 인데 형식을 "yyyymmddhhnnss"으로 보고싶은데
: : : select cast(gdate as date) from tb_data
: : : 위 조회문은 아래같은 에러가 납니다.
: : : can't format message 13:587 -- message file C:\Windows\firebird.msg not found.
: : : conversion error from string "41810.14274306".
: : :
: : :
: : : 박우성 님이 쓰신 글 :
: : : : TDateTime형을 double float형태로 기록해 놓은 것 같네요.
: : : :
: : : :
TDateTime dt = 42135.5624768499983;
: : : : Memo1->Lines->Add( dt.FormatString("yyyy-mm-dd hh:nn:ss") );
: : : :
: : : : 위의 코드를 실행해 보니까, "2015-05-11 13:29:58"라는 값이 나오는 것으로 보아서 맞는듯....
: : : :
: : : :
: : : : 정환철 님이 쓰신 글 :
: : : : : 필드에 기록된 값이 날자시간 인것 같은데 42135.5624768499983 이런 숫자가 증가하는데요...
: : : : : 감잡히시는분 계시나요? 아시는분 도와주세용... 그냥 지나치지 마시공 ㅡ,.ㅡ;;