Apenas Mês, Dia ou Ano – ORACLE – SYSDATE

julho 8, 2015

Algumas vezes precisamos separar uma data, pegando apenas ANO, MÊS ou DIA. Veja abaixo como fazer:

 

Para pegar apenas o ANO da data atual, utilize uma das seguintes maneiras:

select EXTRACT(YEAR FROM sysdate) from dual;
select to_char(sysdate, ‘YYYY’) from dual;

 

Para pegar apenas o MÊS da data atual, utilize uma das seguintes maneiras:

select EXTRACT(MONTH FROM sysdate) from dual;
select to_char(sysdate, ‘mm’) from dual;

 

Para pegar apenas o DIA da data atual, utilize uma das seguintes maneiras:

select EXTRACT(DAY FROM sysdate) from dual;
select to_char(sysdate, ‘dd’) from dual;


Data atual no ORACLE – sysdate / getdate

julho 8, 2015

No Oracle temos uma função muito útil para a obtenção de datas. Esta função é o SYSDATE!

para obter a data atual “do oracle” basta fazer

SELECT SYSDATE FROM DUAL;

O SYSDATE do ORACLE retorna a data obtida pelo oracle do servidor. Porém vc pode forçar o uso de outras datas e horas em sua sessão. ( explicarei em posts futuros )

Como fazer calculos com SYSDATE?

No banco oracle temos um conceito interessante: cada unidade representa um dia ( ~24h ).
Ou seja, se eu quiser mostrar a data de amanhã posso fazer:

SELECT SYSDATE+1 FROM DUAL

Acima, eu solicitei que o oracle mostre a data de hoje mais uma unidade ( ~24h ) que dará o mesmo de amanhã.

Para calcular horas minutos ou segundos basta trabalhar um pouquinho na matemática:

SELECT SYSDATE+1/24 FROM DUAL

Se cada unidade representa 24h então se dividirmos a unidade por 24 teremos as horas!
Logo, na expressão anterior vamos retornar o horário daqui a 1 hora.

OBS.:

Para utilizar como parâmetro de comparação em selects, podemos utilizar o SYSDATE, adicionando ou subtraindo dias ou horas.

— Ex.: Consulta tabela CLIENTE onde o campo DATA_CADASTRO for maior ou igual que 5 dias atrás.

SELECT * FROM CLIENTE WHERE DATA_CADASTRO >= SYSDATE-5;

Fonte: http://www.dartanghan.com.br/oracle-plsql/oracle-sysdate/


Laço While – SQL Server

outubro 6, 2013

Para utilizar um laço WHILE (enquanto) no SQL Server, siga os exemplos abaixo:

1) Exemplo de laço WHILE com incremento de uma variável:
DECLARE @intNumber INT = 1 — declarando uma variável INT e setando seu valor para 1
WHILE (@intNumber <=5) — enquanto a variável possuir valor menor ou igual a 5, execute
BEGIN
PRINT @intNumber — escreve o valor da variável
SET @intNumber = @intNumber + 1 — incrementa a variavel em uma unidade
END
GO

O resultado seria:
1
2
3
4
5

2) Exemplo varrendo uma tabela de produtos
— criação da tabela de produtos, com 5 registros:

create table #tb_produto(pro_codigo int, pro_nome varchar(100))
insert into #tb_produto (pro_codigo, pro_nome) values (1, ‘produto 1’)
insert into #tb_produto (pro_codigo, pro_nome) values (2, ‘produto 2’)
insert into #tb_produto (pro_codigo, pro_nome) values (3, ‘produto 3’)
insert into #tb_produto (pro_codigo, pro_nome) values (4, ‘produto 4’)
insert into #tb_produto (pro_codigo, pro_nome) values (5, ‘produto 5’)

— inserindo os registros em uma tabela temporaria, que possui uma flag para indicar os registros já apresentados

select 0 as tmp_flag, * into #tmp_produto from #tb_produto

while((select COUNT(*) from #tmp_produto where tmp_flag = 0 ) > 0) — enquando existirem registros com a flag = 0
begin

select top 1 * from #tmp_produto where tmp_flag = 0 — seleciona o primeiro registro (com flag igual a 0) e apresenta

update #tmp_produto set tmp_flag = 1 where #tmp_produto.pro_codigo = (select top 1 pro_codigo from #tmp_produto where tmp_flag = 0) — altera a flag do registro apresentado para 1

— ou pode deletar o registro da tabela temporaria depois de usar..
— delete from #tmp_produto where #tmp_produto.pro_codigo = (select top 1 pro_codigo from #tmp_produto where tmp_flag = 0)

end

 

OBS.1: O caracter “#” em frente ao nome da tabela identifica que está é uma tabela temporaria


Listar tabelas e campos – SQLServer

junho 2, 2011

Para listar todas as tabelas e campos de uma base SQL Server, você poderá utilizar a consulta abaixo:

 SELECT
   TABELA.NAME AS TABELA_NOME,
   COLUNA.NAME AS COLUNA,
   TIPO.NAME AS TIPO,
   COLUNA.LENGTH AS TAMANHO
FROM
   SYSOBJECTS AS TABELA,
   SYSCOLUMNS AS COLUNA,
   SYSTYPES   AS TIPO
WHERE
   TABELA.ID = COLUNA.ID
   AND COLUNA.USERTYPE = TIPO.USERTYPE
   ORDER BY TABELA.NAME

Se quiser listar apenas os campos de uma tabela, basta adicionar “AND TABELA.NAME = ‘NOME_DA_TABELA'” ao ‘WHERE’. A consulta ficaria assim:

 SELECT
   TABELA.NAME AS TABELA_NOME,
   COLUNA.NAME AS COLUNA,
   TIPO.NAME AS TIPO,
   COLUNA.LENGTH AS TAMANHO
FROM
   SYSOBJECTS AS TABELA,
   SYSCOLUMNS AS COLUNA,
   SYSTYPES   AS TIPO
WHERE
   TABELA.ID = COLUNA.ID
   AND COLUNA.USERTYPE = TIPO.USERTYPE
   AND TABELA.NAME = 'NOME_DA_TABELA'
   ORDER BY TABELA.NAME

SQL Server Funções de Data

abril 29, 2011

Unidades:

  • DAY
  • MONTH
  • YEAR

GETDATE( ) A função GETDATE retorna a data e a hora atuais do sistema pelo SELECT GETDATE( )

DATEPART(unidade, data):

  • A função DATEPART retorna a parte especificada de uma data como um inteiro, por exemplo:

SELECT DATEPART(YEAR, ’15/12/2000′)
Resposta do comando: 2000
SELECT DATEPART(MONTH, ’15/12/2000′)
Resposta do comando: 12
SELECT DATEPART(DAY, ’15/12/2000′)
Resposta do comando: 15

DATEADD(unidade, valor, data):

  • A função DATEADD retorna uma nova data com o valor informado somado a data, por exemplo:

SELECT DATEADD(DAY, 5, ’15/12/2000′ )
Resposta do comando: 2000-12-20
SELECT DATEADD(MONTH, 5, ’15/12/2000′ )
Resposta do comando: 2001-05-15
SELECT DATEADD(YEAR, 5, ’15/12/2000′ )
Resposta do comando: 2005-12-15

DATEDIFF(unidade, data1, data2):

  • A função DATEDIFF retorna a diferença entre as datas data2 e data1, referente a unidade definida, por exemplo:

SELECT DATEDIFF(DAY, ’15/12/2000′, ’15/12/2001′)
Resposta do comando: 365 (dias)
SELECT DATEDIFF(MONTH, ’15/12/2000′, ’15/12/2001′)
Resposta do comando: 12 (meses)
SELECT DATEDIFF(YEAR, ’15/12/2000′, ’15/12/2002′)
Resposta do comando: 2 (anos)

Quer saber quantos dias você viveu?
SELECT DATEDIFF(DAY, seu_nascimento, GETDATE()) Substitua seu_nascimento pela sua data de nascimento

Dica:
Para melhor entendimento e facilitar a visualização das datas utilize:
Select Convert(Char(10), GetDate(), 103) 
Para trazer a data no formato brasileiro (dd/MM/yyyy), mas você pode utilizar a tabela abaixo para verificar outras formas de impressão e manipulação de datas, trocando o “103″ por um dos valores das 2 primeiras colunas:

Sem século (aa) (1) Com século (aaaa) Padrão Entrada/Saída (3)
0 ou 100 (1,2) Padrão mês dd aaaa hh:miAM (ou PM)
1 101 EUA mm/dd/aaaa
2 102 ANSI aa.mm.dd
3 103 Britânico/francês dd/mm/aaaa
4 104 Alemão dd.mm.aa
5 105 Italiano dd-mm-aa
6 106(1) dd mês aa
7 107(1) Mês dd, aa
8 108 hh:mi:ss
9 ou 109 (1,2) Padrão + milissegundos mês dd aaaa hh:mi:ss:mmmAM (ou PM)
10 110 EUA mm-dd-aa
11 111 JAPÃO aa/mm/dd
12 112 ISO aammdd
aaaammdd
13 ou 113 (1,2) Padrão Europa + milissegundos dd mês aaaa hh:mi:ss:mmm (24h)
14 114 hh:mi:ss:mmm(24h)
20 ou 120 (2) ODBC canônico aaaa-mm-dd hh:mi:ss(24h)
21 ou 121 (2) ODBC canônico (com milissegundos) aaaa-mm-dd hh:mi:ss.mmm(24h)
126 (4) ISO8601 aaaa-mm-ddThh:mi:ss.mmm (sem espaços)
127(6, 7) ISO8601 com fuso horário Z. aaaa-mm-ddThh:mi:ss.mmmZ
(sem espaços)
130 (1,2) Islâmico (5) dd mmm aaaa hh:mi:ss:mmmAM
131 (2) Islâmico (5) dd/mm/aa hh:mi:ss:mmmAM
Fonte: http://tmantello.wordpress.com/2010/08/09/funcoes_data_sql/