Trabalhando com datas – Extraindo informações

Boa noite pessoal!

Continuando o tópico “trabalhando com datas”, continuarei a relacionar algumas dificuldades com extrair informações de tipos DATETIME.

Função responsável por obter a data e hora atual:

GETDATE()
Ou
CURRENT_TIMESTAMP

Outras funções utilizadas para obter de pequenos fragmentos de datas como ano, hora, dia:

Função Exemplo
DAY SELECT DAY(GETDATE())
MONTH SELECT MONTH(GETDATE())
YEAR SELECT YEAR(GETDATE())

Obs.: As três funções acima não funcionam em SQL CE.

Para obter informações sobre dia de semana, hora, minuto, segundo e outras, não é possível pelas três funções acima, sendo necessário utilizar a função DATEPART, exemplo:

SELECT DATEPART(YEAR, GETDATE())
SELECT DATEPART(MONTH, GETDATE())
SELECT DATEPART(WEEKDAY, GETDATE())
SELECT DATEPART(DAY, GETDATE())
SELECT DATEPART(HOUR, GETDATE())
SELECT DATEPART(MINUTE, GETDATE())
SELECT DATEPART(SECOND, GETDATE())

Na biblioteca do MSDN, também existe uma relação de todas as dateparts possíveis:
http://msdn.microsoft.com/en-us/library/ms174420.aspx

Também existe a função DATENAME, que retorna, quando possível, o nome do mês ou do dia da semana, exemplo:

SELECT DATENAME(MONTH, GETDATE())
SELECT DATENAME(WEEKDAY, GETDATE())

Pequeno detalhe, se o servidor estiver no idioma inglês será necessário utilizar a seguinte instrução:

SET LANGUAGE 'Brazilian'
Ou
SET LANGUAGE 'Portuguese'

Obs.: No SQL Server, o idioma Brasileiro existe e funciona melhor que o português, exemplo:

SET LANGUAGE 'Portuguese'
SELECT DATENAME(MONTH, GETDATE()), DATENAME(WEEKDAY, GETDATE())
Ou
SET LANGUAGE 'Brazilian'
SELECT DATENAME(MONTH, GETDATE()), DATENAME(WEEKDAY, GETDATE())

A relação dos idiomas possíveis pode ser conseguida pela view:

SELECT * FROM syslanguages

Somente para completar o post anterior, abaixo as funções para pegar dia/mês/ano e hora:minuto:segundo:

SELECT CONVERT(VARCHAR(8),GETDATE(),103)
SELECT CONVERT(VARCHAR(8),GETDATE(),108)

E o diferencial de trabalhar com SQL Server 2008, onde existem os tipos DATE e TIME, sendo possível obter estas informações até mesmo por um simples cast: 

SELECT CAST(GETDATE() AS DATE)
SELECT CAST(GETDATE() AS TIME)

(at. http://blog.sqlauthority.com/2009/08/06/sql-server-get-time-in-hourminute-format-from-a-datetime-get-date-part-only-from-datetime/ )

Pessoal, então finalizando este post, agradeço as visitas nestes quatro primeiros meses de blog que têm me animado bastante a continuar escrevendo, principalmente os emails e comentários que tenho recebido.

Até o próximo post!

4 pensamentos sobre “Trabalhando com datas – Extraindo informações

  1. Pingback: Trabalhando com datas – Lista de meses e dias da semana « SQL from Hell !!!

  2. Pingback: Trabalhando com datas – Scripts para trabalhar com os dias de um mês « SQL From Hell.com

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s