FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[4748] Re:Re:Re:쿼리로 원하는 시간으로 날자를 변경해서 수정할려고 합니다.
권익수.어느좋은날 [freepascal] 2038 읽음    2015-06-01 13:09
해당 필드에 현재 일시를 숫자값으로 저장할려면 아래처럼 해보세요.

-- 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 이런 숫자가 증가하는데요...
: : : : :  감잡히시는분 계시나요?  아시는분 도와주세용... 그냥 지나치지 마시공 ㅡ,.ㅡ;;

+ -

관련 글 리스트
4741 필드에 기록된 값이 날자시간 인것 같은데 42135.5624768499983 이런 숫자가 감잡히시는분 계시나요? 정환철 1562 2015/05/19
4742     Re:필드에 기록된 값이 날자시간 인것 같은데 42135.5624768499983 이런 숫자가 감잡히시는분 계시나요? 박우성 1661 2015/05/19
4743         쿼리문으로만 데이터를 변환해서 볼수있는 방법이 있을까요? 정환철 1638 2015/05/20
4745             Re:쿼리문으로만 데이터를 변환해서 볼수있는 방법이 있을까요? 박우성 1750 2015/05/20
4747                 Re:Re:쿼리로 원하는 시간으로 날자를 변경해서 수정할려고 합니다. 정환철 1802 2015/05/30
4748                     Re:Re:Re:쿼리로 원하는 시간으로 날자를 변경해서 수정할려고 합니다. 권익수.어느좋은날 2038 2015/06/01
4744             Re:쿼리문으로만 데이터를 변환해서 볼수있는 방법이 있을까요? 권익수.어느좋은날 1718 2015/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.