• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 1. MySQL Connector / ODBC
    2. MySQL Connector/Net
    3. MySQL Connector/J
    4. MySQL Connector/C++
    5. MySQL Connector/C
    6. MySQL Connector/Python
    7. libmysqld, the Embedded MySQL Server Library
    8. MySQL C API
    1. MySQL C API 구현
    2. MySQL Server MySQL Connector/C 동시 설치
    3. C API 클라이언트 프로그램 예제
    4. Building and Running C API Client Programs
    5. C API Data 구조
    6. C API Function 개요
    7. C API Function 설명
    8. C API Prepared Statements
    9. C API Prepared Statement Data 구조
    10. C API Prepared Statement 함수 개요
    11. C API Prepared Statement 함수 설명
    12. C API Threaded 함수 설명
    13. C API 임베디드 서버 함수 설명
    14. C API Client Plugin 함수
    15. C API를 사용하는 경우 일반적인 질문과 문제
    16. 자동 재 연결 동작 제어
    17. 여러 명령문 실행 C API 지원
    18. C API Prepared Statement 문제
    19. C API Prepared Statement date 및 time 값 처리
    20. C API의 Prepared CALL Statements 지원
    9. MySQL PHP API
    10. MySQL Perl API
    11. MySQL Python API
    12. MySQL Ruby APIs
    13. MySQL Tcl API
    14. MySQL Eiffel Wrapper
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

23.8.19 C API Prepared Statement date 및 time 값 처리

바이너리 (Prepared Statement) 프로토콜은 MYSQL_TIME 구조를 사용하여 시간 값 ( DATE , TIME , DATETIME , 그리고 TIMESTAMP )을주고받을 수 있습니다. 이 구조의 구성원은 섹션 23.8.9 "C API Prepared Statement 데이터 구조" 에서 설명하고 있습니다.

시간 데이터 값을 전송하려면 mysql_stmt_prepare() 를 사용하여 Prepared Statement을 만듭니다. 그 후, mysql_stmt_execute() 를 호출하여 문을 실행하기 전에 다음 단계를 사용하여 각 시간 매개 변수를 설정합니다.

  1. 데이터 값에 관련된 MYSQL_BIND 구조에서 buffer_type 멤버를 보내는 시간 값의 종류를 나타내는 형태로 설정합니다. DATE , TIME , DATETIME 또는 TIMESTAMP 값에서 buffer_type 을 MYSQL_TYPE_DATE , MYSQL_TYPE_TIME , MYSQL_TYPE_DATETIME 또는 MYSQL_TYPE_TIMESTAMP 에 각각 설정합니다.

  2. MYSQL_BIND 구조의 buffer 멤버를 시간 값을 전달 MYSQL_TIME 구조의 주소로 설정합니다.

  3. 배달 시간 값의 형태에 적절한 MYSQL_TIME 구조의 멤버를 입력합니다.

mysql_stmt_bind_param() 을 사용하여 파라미터 데이터를 문에 바인딩합니다. 이는 mysql_stmt_execute() 를 호출 할 수 있습니다.

시간 값을 취득하는 경우, buffer_type 멤버를받을 것으로 기대 값의 형태로 설정하고 buffer 멤버를 반환 값을 배치하는 MYSQL_TIME 구조의 주소로 설정하는 것을 제외하고 단계는 동일합니다. mysql_stmt_bind_result() 를 사용하여 mysql_stmt_execute() 를 호출 한 뒤,하고 결과를 가져 오기 전에 문에 버퍼를 바인딩합니다.

이것은 DATE , TIME 및 TIMESTAMP 데이터를 삽입하는 간단한 예제입니다. mysql 변수는 유효한 접속 핸들로 간주됩니다.

  MYSQL_TIME  ts;
  MYSQL_BIND  bind[3];
  MYSQL_STMT  *stmt;

  strmov(query, "INSERT INTO test_table(date_field, time_field, \
                               timestamp_field) VALUES(?,?,?");

  stmt = mysql_stmt_init(mysql);
  if (!stmt)
  {
    fprintf(stderr, " mysql_stmt_init(), out of memory\n");
    exit(0);
  }
  if (mysql_stmt_prepare(mysql, query, strlen(query)))
  {
    fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed");
    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
    exit(0);
  }

  /* set up input buffers for all 3 parameters */
  bind[0].buffer_type= MYSQL_TYPE_DATE;
  bind[0].buffer= (char *)&ts;
  bind[0].is_null= 0;
  bind[0].length= 0;
  ...
  bind[1]= bind[2]= bind[0];
  ...

  mysql_stmt_bind_param(stmt, bind);

  /* supply the data to be sent in the ts structure */
  ts.year= 2002;
  ts.month= 02;
  ts.day= 03;

  ts.hour= 10;
  ts.minute= 45;
  ts.second= 20;

  mysql_stmt_execute(stmt);
  ..


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved