segunda-feira, 14 de março de 2011

Datas de Calendário em Informix

Datas de calendário em Banco de Dados Informix são armazenados como inteiros representando o numero de dias corridos desde 31 de dezembro de 1899. Como valores DATE são inteiros, eles podem ser usados em expressões aritméticas. Por exemplo:

SELECT order_date + 5 FROM orders

O exemplo acima adiciona cinco dias para cada data do pedido.

Quando a data é exibida por um servidor de banco de dados IBM Informix, o formato padrão é mm/dd/aaaa. Funções podem ser aplicadas para os valores armazenados em um tipo de dado DATE para modificar o modo de exibição, ou extrair o dia, dia da semana, e assim por diante.

Os tipos de dados cronológicos adicionais são:

  • DATETIME – registra um ponto exato no tempo, com precisão de um ano até uma fração de segundo. Quando você define uma coluna DATETIME. você pode especificar a sua precisão.
  • INTERVAL- armazena a medida de tempo entre dois tipos de dados DATETIME.

Algumas das funções relatadas para data e hora são listadas abaixo. Você pode usar essas funções na clausula SELECT ou na clausula WHERE de uma query. Essas funções retornam um valor que corresponde à expressão ou argumentos que você usa para chamar a função.

  • DAY (expressão date / datetime) – retorna um valor inteiro que representa o dia do mês.
  • MONTH (expressão date / datetime) – retorna um valor inteiro que representa o mês.
  • WEEKDAY (expressão date / datetime) – retorna um inteiro que representa o dia da semana (de 0 a 6, onde Domingo é 0 (zero)).
  • YEAR (expressão date / datetime) – retorna um inteiro de quatro dígitos que representa o ano.
  • DATE (expressão nondate) – retorna um valor DATE que corresponde a uma expressão caractere com a qual você chamou.
  • EXTEND (expressão date / datetime, [ primeiro ao ultimo]) – ajusta a precisão do valor DATE ou DATETIME.
  • MDY (mês, dia, ano) – retorna um DATE no formato mm/dd/aaaa com o mês, dia e ano informados.
  • CURRENT – retorna um valor DATETIME do instante corrente.

Uma expressão date / datetime é uma expressão que corresponde a um valor DATE ou DATETIME.

Exemplos:

Comparando Datas

SELECT customer_num, call_dtime
FROM cust_calls
WHERE call_dtime >= ‘2011-03-14’;

 

SELECT customer_num, call_dtime
FROM cust_calls
WHERE call_dtime >= DATE(‘03/14/2011’)

Extraindo o Mês

SELECT customer_num, MONTH(call_dtime)
FROM cust_calls

As funções TODAY e CURRENT

SELECT customer_num, MONTH(call_dtime)

FROM cust_calls

WHERE MONTH(call_dtime) = MONTH(CURRENT)

AND YEAR(call_dtime) < YEAR(CURRENT);

SELECT customer_num, MONTH(call_dtime)

FROM cust_calls

WHERE MONTH(call_dtime) = MONTH(TODAY)

AND YEAR(call_dtime) < YEAR(TODAY);

Também as funções TODAY ou CURRENT podem ser usadas para extrair o mês, dia, ano ou dia da semana da data do sistema. Esse exemplo usa a função TODAY e CURRENT para comparar os valores da coluna call_dtime para o mesmo mês corrente, mas do ano anterior.

A função TODAY retorna a data do sistema como um tipo DATE. A função CURRENT retorna o valor como um DATETIME.

A função EXTEND

SELECT customer_num call_dtime

FROM cust_calls

SELECT customer_num, EXTEND(call_dtime, month to minute)

FROM cust_calls

O primeiro exemplo acima retorna os valores de customer_num e call_dtime da tabela cust_calls sem o uso da função EXTEND. no segundo exemplo, a função EXTEND restringe os valores DATETIME da coluna call_dtime da tabela cust_calls exibindo somente os sub-campos especificados, de um mês ate minuto. Note que o ano não é retornado nesse exemplo.

A função TO_CHAR

SELECT TO_CHAR(call_dtime, ‘%A %B %d %Y %R’)

FROM cust_calls

A função TO_CHAR converte um valor DATE ou DATETIME para uma sequencia de caractere. A sequencia de caracteres contem a data no formato requisitado. Se você omitir todos os símbolos de formato, o formato padrão de data é usado.

Símbolo:

Faixa de caractere retornada:

%A

Nome completo do dia da semana

%B

Nome completo do mês

%d

Dia do mês como um decimal

%m

Mês como um decimal

%Y

Ano como um decimal de 4 dígitos

%R

Hora do dia no formato de 24 horas

Nota: A função TO_CHAR foi introduzida com o IDS 7.3

A função TO_DATE

SELECT * FROM cust_calls

WHERE call_dtime = TO_DATE(‘2011-03-14 14:56’,’%Y-%m-%d %H:%M’)

A função TO_DATE converte uma sequencia de caracteres para um valor DATETIME. A sequencia de caracteres é convertida de acordo como o formato especificado. Os símbolos de formato para a função TO_CHAR pode ser usados, bem como:

Símbolo:

Faixa de caractere retornada:

%H

Numero de horas

%M

Numero de minutos

Se você omitir o formato, o formato padrão do DATETIME é usado para converter a expressão.

2 comentários:

  1. Olá,
    Existe a possibilidade de criar uma function retornando um table, no Informix?
    Similar ao sql server.
    Agradeço,
    André Milke

    ResponderExcluir
  2. Ola André,

    Não sei se entendi direito sua duvida, porem se vc esta querendo retornar nomes de tabelas em uma função é possivel sim, vc pode pegar as nomes da tabela na systables.

    qualquer duvida estamos ai.

    ResponderExcluir