나는> pqexecparams를 통해 날짜의 에포크 값을 얻으려고 노력한다 (conn, "select extract (epoch from…." >

Re : LIBPQ 이진 토토 사이트

출발 : "Daniel Verite"
to : Thilo (at) Riessner (dot) de
CC : pgsql-interfaces (at) postgresql (dot) org
제목 : Re : LIBPQ 이진 토토 사이트
날짜 : 2014-10-01 19:45:50
메시지 -ID : 68C2C90F-2407-4CB0-A234-D38CB68E90D2@MM
보기 : 원시 메시지 | 전체 스레드 | mbox 다운로드 | 이메일 재판용
스레드 :
목록 : pgsql-interfaces

Thilo (at) Riessner (dot) de writ :

> 나는를 통해 날짜의 에포크 값을 얻으려고 노력한다.
> pqexecparams (Conn, "Expoch, Content로 추출 (날짜 + 시간부터 epoch)을 선택하십시오.
> Daten에서 .....);
> 해당 토토 사이트베이스에서 타임 스탬프는 두 필드 날짜와 시간에 저장된 것입니다.
>이 토토 사이트를 이진 형식으로 가져오고 싶습니다. 그만큼
> pqfsize (res, 1);
> 반환 된 토토 사이트의 크기는 8 바이트라고 말합니다 (
> 에포크의 표준 크기는 4 바이트)
> 나는 그로부터 에포크 밸브 (1970 년 이후 몇 초)를 얻지 못합니다
> 반환 된 값.

추출물에 관한 문서 (소스에서 필드) 말한다 :
"추출 함수는 유형의 이중 정밀도 값을 반환합니다"

in c, 아마도 "double"64 비트 플로팅 포인트 유형에 매핑 될 것입니다.

이진 표현을 호스트 변수로 변환하는 코드의 경우
백엔드/libpq/pqformat.c에서 우편 그 자체의 비트

그렇지 않으면 작업 예제가 다음과 같이 보일 수 있습니다
(플랫폼에 적합한 것을 보장하지 않음) :

#include
Union
uint64_t i;
더블 FP;
스왑;
UINT64_T IBE = *((UINT64_T *) PQGETVALUE (결과, 행, 열);
swap.i = be64toh (ibe);

결과는 swap.fp에 있습니다.

또는 Postgres에서 int를 얻는 것을 선호하는 경우 extract ()의 결과를 캐스트합니다.
SQL 쿼리 자체의 정수에.

안부,
--
Daniel
Postgresql 기반 메일 사용자 에이전트 및 스토리지 :http://www.manitou-mail.org

응답으로

날짜 별 PGSQL 인터페이스 찾아보기

From 날짜 주제
다음 메시지 Frank Ernest 2014-10-01 20:14:00 select에서 int를 얻는 방법
이전 메시지 Thilo 2014-10-01 16:26:08 libpq 이진 토토 사이트