Para executar as consultas abra o SQL Server Management Studio, efetue o login e a seguir clique em New Query ou tecle CTRL+N.
Será aberta a janela para você digitar a consulta T-SQL.
Após digitar clique em Execute e veja o na janela logo abaixo.
Agora vamos ao trabalho:
Para retornar a data e hora atual podemos usar as funções GETDATE, GETUTCDATE, CURRENT_TIMESTAMP, SYSDATETIME, SYSUTCDATETIME, or SYSDATETIMEOFFSET
- GETDATE e CURRENT_TIMESTAMP retornam a data e hora local em um tipo de dados datetime.
- GETUTCDATE retorna a hora UTC também no tipo de dados datetime.
- SYSDATETIME retorna a data e hora local no tipo de dados datetime2.
- SYSUTCDATETIME retorna a hora UTC também no tipo de dados datetime2.
- SYSDATETIMEOFFSET retorna a hora local mais o numero de horas e minutos de deslocamento do UTC no tipo de dados datetimeoffset.
UTC - significa 'Universal Time Coordinate" ou 'Tempo Universal Coordenado' , também conhecido como tempo civil, é o fuso horário de referência a partir do qual se calculam todas as outras zonas horárias do mundo. Corresponde à hora de inverno de Portugal Continental e Arquipélago da Madeira e à hora de verão do Arquipélago dos Açores.
É o sucessor do Tempo Médio de Greenwich (Greenwich Mean Time), cuja sigla é GMT. A nova denominação foi cunhada para eliminar a inclusão de uma localização específica num padrão internacional, assim como para basear a medida do tempo nos padrões atômicos, mais do que nos celestes.
Para adicionar ou subtrair um intervalo de data ou hora em um valor para data utilize a função DATEADD. SELECTDATEADD(YEAR,-1,'2013-04-02T00:00:00'); -> Subtrai um ano da data informada SELECTDATEADD(YEAR,+1,'2014-04-02T00:00:00');-> Adiciona um ano à data informada SELECTDATEADD(Day, 1,'2014-04-29T00:00:00'); -> Adiciona um dia da data SELECTDATEADD(Month,-1,'2014-04-29T00:00:00');-> Subtrai um mês da data
SELECTDATEADD(hour,+1,'2014-04-29T00:00:00');-> Adiciona uma hora à data
Sintaxe : DATEAD (datepart, número, data)
Retorna uma data especificada com o intervalo número especificado (inteiro com sinal) adicionado à datepart especificada dessa data.
A função DATEADD usa 3 parâmetros :
1- O primeiro parâmetro é a parte da data a modificar. Os valores usados estão na tabela abaixo:
DatePart
Abreviação
Year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
Day
dd, d
week
wk, ww
weekday
dw, w
hour
hh
minute
min, n
second
ss, s
milisecond
ms
microsecond
mcs
nanosecond
ns
2- O segundo parâmetro é o valor numérico para o número de de unidades dateparts que estamos adicionando/subtraindo do valor da data. (valores negativos subtraem as unidades das datas). 3- O terceiro parâmetro é a data a ser modificada. Nota: - O tipo de dados de retorno é o tipo de dados do argumento date, com exceção de literais de cadeia de caracteres. - O tipo de dados de retorno para um literal de cadeia de caracteres é datetime. - Um erro será gerado se a escala de segundos do literal de cadeia de caracteres tiver mais de três posições (nnn) ou contiver a parte de deslocamento do fuso horário.
A função retorna a contagem (inteiro com sinal) dos limites especificados de datepart cruzados entre os parâmetros especificados startdate e enddate.
Neste exemplo eu estou usando o banco de dados Northwind.mdf e calculando a diferença entre a data de hoje e data armazenada no campo ShippedDate da tabela Orders em dias.
Sintaxe:
DATEDIFF ( datepart , startdate , enddate )
A função DATEDIFF aceita três parâmetros:
datepart - usado para identificar se você esta contando a diferença em termos de dias, horas, meses, etc;
A data inicio;
A data fim;
Note que a função retorna o número de limites datepart cruzados o que não é a mesma coisa que o tempo decorrido entre as duas datas.
A seguir temos dois exemplos de consultas onde cada coluna retorna a quantidade de um limite datepart cruzado para cada datepart especificado, embora a diferença entre as duas datas seja de 100 nano segundos (0,000001 segundos).
- Cada datepart e suas abreviações retornam o mesmo valor. - Se o valor de retorno estiver fora do intervalo de int (-2,147,483,648 a +2,147,483,647), um erro será retornado. - Para millisecond, a diferença máxima entre startdate e enddate é de 24 dias, 20 horas, 31 minutos e 23.647 segundos. - Para second, a diferença máximo é de 68 anos. - Se a startdate e enddate forem atribuídos apenas um valor de hora e o datepart não for um datepart de hora, será retornado 0. - Se apenas um valor de hora for atribuído a uma variável de tipo de dados 'data', o valor da parte 'data' faltante será definido como o padrão: 1900-01-01
Para obter o nome do mês e dia da semana para uma data específica utilize a função DATENAME.
A função DATENAME retorna uma cadeia de caracteres que representa o datepart especificado da date especificada.
Sintaxe: DATENAME ( datepart , date )
O valor do retorno depende do ambiente de idioma definido usando SET LANGUAGE.
No exemplo abaixo a consulta SQL retorna o nome do mês e o nome do dia da semana para o campo RequiredDate da tabela Orders do banco de dados Northwind.mdf.
Note que usamos a instrução SET LANGUAGE definindo o idioma como Português.
- A configuração de SET LANGUAGE é definida no momento da execução e não no momento da análise.
- SET LANGUAGE define implicitamente a configuração de SET DATEFORMAT.
Para saber o último dia do mês de uma data utilize a função EOMONTH.
A função EOMONTH retorna o último dia do mês que contém a data especificada com um deslocamento opcional.
Sintaxe: EOMONTH ( start_date [, month_to_add ] )
start_date
Expressão de data que especifica a data para a qual retornar o último dia do mês.
month_to_add
Expressão de inteiro opcional que especifica o número de meses a adicionar a start_date.Se esse argumento for especificado, EOMONTH adicionará o número de meses especificado a start_date e retornará o último dia do mês da data resultante. Se essa adição exceder o intervalo de datas válido, um erro será lançado.
Na consulta SQL baixo usamos a função EOMONTH para obter o último dia do mês de uma data para o mês atual e para o mês seguinte.
Essa função pode ser remota para servidores SQL Server 2012 e posteriores. Ela não pode ser remota para servidores com versão anterior a SQL Server 2012.
E com isso concluímos esta etapa mostrando algumas funções T-SQL para tratar datas no SQL Server.
git help add
git help commit
git help <qualquer_comando_git>
Configuração
Geral
As configurações do GIT são armazenadas no arquivo .gitconfig localizado dentro do diretório do usuário do Sistema Operacional (Ex.: Windows: C:\Users\Documents and Settings\Leonardo ou *nix /home/leonardo).
As configurações realizadas através dos comandos abaixo serão incluídas no arquivo citado acima.
Os nomes de arquivos/diretórios ou extensões de arquivos listados no arquivo .gitignore não serão adicionados em um repositório. Existem dois arquivos .gitignore, são eles:
Geral: Normalmente armazenado no diretório do usuário do Sistema Operacional. O arquivo que possui a lista dos arquivos/diretórios a serem ignorados por todos os repositórios deverá ser declarado conforme citado acima. O arquivo não precisa ter o nome de .gitignore.
Por repositório: Deve ser armazenado no diretório do repositório e deve conter a lista dos arquivos/diretórios que devem ser ignorados apenas para o repositório específico.
Repositório Local
Criar novo repositório
git init
Verificar estado dos arquivos/diretórios
git status
Adicionar arquivo/diretório (staged area)
Adicionar um arquivo em específico
git add meu_arquivo.txt
Adicionar um diretório em específico
git add meu_diretorio
Adicionar todos os arquivos/diretórios
git add .
Adicionar um arquivo que esta listado no .gitignore (geral ou do repositório)
git add -f arquivo_no_gitignore.txt
Comitar arquivo/diretório
Comitar um arquivo
git commit meu_arquivo.txt
Comitar vários arquivos
git commit meu_arquivo.txt meu_outro_arquivo.txt
Comitar informando mensagem
git commit meuarquivo.txt -m "minha mensagem de commit"
Remover arquivo/diretório
Remover arquivo
git rm meu_arquivo.txt
Remover diretório
git rm -r diretorio
Visualizar histórico
Exibir histórico
git log
Exibir histórico com diff das duas últimas alterações
git log -p -2
Exibir resumo do histórico (hash completa, autor, data, comentário e qtde de alterações (+/-))
git log --stat
Exibir informações resumidas em uma linha (hash completa e comentário)
git log --pretty=oneline
Exibir histórico com formatação específica (hash abreviada, autor, data e comentário)
git log --pretty=format:"%h - %an, %ar : %s"
%h: Abreviação do hash;
%an: Nome do autor;
%ar: Data;
%s: Comentário.
Verifique as demais opções de formatação no Git Book
Exibir histório de um arquivo específico
git log -- <caminho_do_arquivo>
Exibir histórico de um arquivo específico que contêm uma determinada palavra
Enviar arquivos/diretórios para o repositório remoto
O primeiro push de um repositório deve conter o nome do repositório remoto e o branch.
git push -u origin master
Os demais pushes não precisam dessa informação
git push
Atualizar repositório local de acordo com o repositório remoto
Atualizar os arquivos no branch atual
git pull
Buscar as alterações, mas não aplica-las no branch atual
git fetch
Clonar um repositório remoto já existente
git clone git@github.com:leocomelli/curso-git.git
Tags
Criando uma tag leve
git tag vs-1.1
Criando uma tag anotada
git tag -a vs-1.1 -m "Minha versão 1.1"
Criando uma tag assinada
Para criar uma tag assinada é necessário uma chave privada (GNU Privacy Guard - GPG).
git tag -s vs-1.1 -m "Minha tag assinada 1.1"
Criando tag a partir de um commit (hash)
git tag -a vs-1.2 9fceb02
Criando tags no repositório remoto
git push origin vs-1.2
Criando todas as tags locais no repositório remoto
git push origin --tags
Branches
O master é o branch principal do GIT.
O HEAD é um ponteiro especial que indica qual é o branch atual. Por padrão, o HEAD aponta para o branch principal, o master.
Criando um novo branch
git branch bug-123
Trocando para um branch existente
git checkout bug-123
Neste caso, o ponteiro principal HEAD esta apontando para o branch chamado bug-123.
Criar um novo branch e trocar
git checkout -b bug-456
Voltar para o branch principal (master)
git checkout master
Resolver merge entre os branches
git merge bug-123
Para realizar o merge, é necessário estar no branch que deverá receber as alterações. O merge pode automático ou manual. O merge automático será feito em arquivos textos que não sofreram alterações nas mesmas linhas, já o merge manual será feito em arquivos textos que sofreram alterações nas mesmas linhas.
A mensagem indicando um merge manual será:
Automerging meu_arquivo.txt
CONFLICT (content): Merge conflict in meu_arquivo.txt
Automatic merge failed; fix conflicts and then commit the result.
Apagando um branch
git branch -d bug-123
Listar branches
Listar branches
git branch
Listar branches com informações dos últimos commits
git branch -v
Listar branches que já foram fundidos (merged) com omaster
git branch --merged
Listar branches que não foram fundidos (merged) com omaster
git branch --no-merged
Criando branches no repositório remoto
Criando um branch remoto com o mesmo nome
git push origin bug-123
Criando um branch remoto com nome diferente
git push origin bug-123:new-branch
Baixar um branch remoto para edição
git checkout -b bug-123 origin/bug-123
Apagar branch remoto
git push origin:bug-123
Rebasing
Fazendo o rebase entre um o branch bug-123 e o master.
git checkout experiment
git rebase master
Mais informações e explicações sobre o Rebasing
###Stash
Para alternar entre um branch e outro é necessário fazer o commit das alterações atuais para depois trocar para um outro branch. Se existir a necessidade de realizar a troca sem fazer o commit é possível criar um stash. O Stash como se fosse um branch temporário que contem apenas as alterações ainda não commitadas.
Criar um stash
git stash
Listar stashes
git stash list
Voltar para o último stash
git stash apply
Voltar para um stash específico
git stash apply stash@{2}
Onde 2 é o indíce do stash desejado.
Criar um branch a partir de um stash
git stash branch meu_branch
Reescrevendo o histórico
Alterando mensagens de commit
git commit --amend -m "Minha nova mensagem"
Alterar últimos commits
Alterando os três últimos commits
git rebase -i HEAD~3
O editor de texto será aberto com as linhas representando os três últimos commits.
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added catfile
Altere para edit os commits que deseja realizar alterações.
edit f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added catfile
Feche o editor de texto.
Digite o comando para alterar a mensagem do commit que foi marcado como edit.
git commit –amend -m “Nova mensagem”
Aplique a alteração
git rebase --continue
Atenção: É possível alterar a ordem dos commits ou remover um commit apenas mudando as linhas ou removendo.
Juntando vários commits
Seguir os mesmos passos acima, porém marcar os commtis que devem ser juntados com *squash
Remover todo histórico de um arquivo
git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Bisect
O bisect (pesquisa binária) é útil para encontrar um commit que esta gerando um bug ou uma inconsistência entre uma sequência de commits.
Iniciar pequinsa binária
git bisect start
Marcar o commit atual como ruim
git bisect bad
Marcar o commit de uma tag que esta sem o bug/inconsistência
git bisect good vs-1.1
Marcar o commit como bom
O GIT irá navegar entre os commits para ajudar a indentificar o commit que esta com o problema. Se o commit atual não estiver quebrado, então é necessário marca-lo como bom.
git bisect good
Marcar o commit como ruim
Se o commit estiver com o problema, então ele deverá ser marcado como ruim.
git bisect bad
Finalizar a pesquisa binária
Depois de encontrar o commit com problema, para retornar para o HEAD utilize: