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