O novo protocolo binário disponível no MySQL 4.1 e acima lhe
permite enviar e receber dados de hora e data
(DATE
, TIME
,
DATETIME
e TIMESTAMP
)
utilizando a estrutura MYSQL_TIME
. Os membros
desta estrutura estão em
Secção 12.1.5, “Tipos de Dados de Instruções Preparadas da API C”.
Para enviar um valor de dado temporal, você cria uma
instrução preparada com mysql_prepare()
.
Então, antes de chamar mysql_execute()
para
executar a instrução, use o seguinte procedimento para
configurar cada parâmetro temporal:
Na estrutura MYSQL_BIND
associado com o
valor do dado, configure o membro
buffer_type
para o tipo que indique qual
tipo de valor temporal você está enviando. Para valores
DATE
, TIME
,
DATETIME
, ou TIMESTAMP
configure buffer_type
para
MYSQL_TYPE_DATE
,
MYSQL_TYPE_TIME
,
MYSQL_TYPE_DATETIME
, ou
MYSQL_TYPE_TIMESTAMP
repectivamente.
Configure o membro buffer
da estrutura
MYSQL_BIND
com o endereço da estrutura
MYSQL_TIME
na qual você passrá o valor
temporal.
Preencha os membros da estrutura
MYSQL_TIME
que são apropriadas para o
tipo de valor temporal que você está passando.
Use mysql_bind_param()
para ligar os dados do
parâmetro a instrução. Então chame
mysql_execute()
.
Para recuperar valores temporais, o procedimento é similar,
exceto pelo fato de que você configura o membro
buffer_type
com o valor que você espera
receber e o membro buffer
com o endereço de
uma estrutura MYSQL_TIME
na qual o valor
retornado deve ser colocado. Use
mysql_bind_results()
para ligar o buffer a
instrução depois da chamada de
mysql_execute()
e antes de buscar os
resultados.
Aqui está um exemplo simples que insere dados
DATE
, TIME
e
TIMESTAMP
. A variável
mysql
é considerada como um handle de
conexão válido.
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_prepare(mysql, query, strlen(query))); /* define a entrada do buffer com 3 parâmetros */ 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_bind_param(stmt, bind); /* fornece os dados a serme enviados na estrutura ts */ ts.year= 2002; ts.month= 02; ts.day= 03; ts.hour= 10; ts.minute= 45; ts.second= 20; mysql_execute(stmt); ..
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.