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.