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.
| 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++.