Suporte para estruturas temporárias struct tm

Além de suportar time_t, a API auxiliar de tipo de dados também suporta a estrutura comum C++ struct tm. Os valores de data e registro de data e hora podem ser convertidos em um tm; no entanto, os valores de hora e TimeTz não podem, pois não há informações de data incluídas nesses valores.

A API usa a implementação rigorosa de struct tm que não contém os campos adicionais tm_zone e tm_gmtoff, normalmente vistos em GCC. A implementação estrita é necessária para consistência entre o host e bibliotecas dos SPUs C++. A API fornece funções para conversões entre struct tm e os tipos de dados Date e Timestamp Netezza Performance Server. Uma vez que o struct tm usa mais campos do que o necessário para armazenar as informações sobre Data ou Registro de Data e Hora, diversos campos são ignorados pela conversão. A tabela a seguir lista os mapeamentos entre os campos tm e suas contrapartes de tipo de dados Netezza Performance Server.

Tabela 1. Exemplos de propriedades do tipo de dados struct tm e Netezza Performance Server
campos de struct tm Os dados usados por NZ DATE Os dados usados por NZ TIMESTAMP
tm_sec (0 – 61) Ignorado Seconds (0 - 59)
tm_min (0 - 59) Ignorado Minutos
tm_hour (0 - 23) Ignorado Horas
tm_mday (1 - 31) dia do mês Dia Dia
tm_mon (0 - 11) meses desde janeiro Mês Mês
tm_year desde 1900 Ano Ano
tm_wday (0 - 6) dia da semana Dia da semana Dia da semana
tm_yday (0 - 365) dia do ano Year Day Year Day
tm_isdst sinalizador de horário de verão Set to -1 Set to -1

Para conversões de e para struct tm, Netezza Performance Server não usa ou suporta segundos bissextos. Assim, os campos segundos do struct tm que são gravados pela API nunca ultrapassam 59. Se uma rotina de conversão é chamada com um struct tm contendo um campo tm_sec60 ou 61, a API emitirá um erro.

Quando você estiver codificando de um formato struct tm, campos ignorados podem conter quaisquer dados. Quando você está decodificando para um struct tm, os campos ignorados têm um valor de zero.

O sinalizador tm_isdst é ignorado na entrada e é configurado como -1 para 'desconhecido' na saída. Configurando tm_isdst para -1 não está dentro do padrão, mas é uma prática do segmento do negócio típica. Em todos os outros aspectos, a API está em conformidade com todas as especificações time_t, conforme listado no padrão ANSI C++.