You are currently browsing the monthly archive for setembro 2011.


Segue abaixo um problema que não tinha passado no SQL 2008 mais que muitos podem vir a passar:

Em muitos sistemas que já vi as somas ou subtrações são feitas como este exemplo abaixo:

DECLARE @DATE as DATETIME = GETDATE()

SELECT @DATE - 1
-----------------------
2011-09-21 14:28:33.910

 

Porém no SQL2008 com os novos tipos de datas isso não funciona mais

DECLARE @DATE as DATETIME2(0) = SYSDATETIME()
SELECT @DATE - 1

GO
DECLARE @DATE as DATE = SYSDATETIME()
SELECT @DATE - 1
Msg 206, Level 16, State 2, Line 4
Operand type clash: datetime2 is incompatible with int
Msg 206, Level 16, State 2, Line 3
Operand type clash: date is incompatible with int

#FICA_A_DICA

Xupinhado de: http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx

Hoje fui aprovado em mais uma certificação a primeira da carreira de DEV (MCTS – 70-433), já tenho as 2 de ADM (MCTS e MITP) e as 2 de BI (MCTS e MITP).

Estas 2 ultimas linhas (ADM e BI) praticamente não estudei, fui com o meu conhecimento do dia-a-dia, pois estava atuando diretamente com elas. No caso de DEV não estava atuando diretamente o que me fez ter de estudar e rever alguns conhecimentos.

Sempre que alguém falava da prova de DEV sempre falava “a parte de XML é muito difícil”, estudei tanto isso que a parte de XML acertei todas 😛 alguns outros pontos acabei ficando com dúvida.

Em breve coloco um post sobre tudo que estudei sobre XML, por enquanto fica em anexo o guia de certificação para quem esta interessado no assunto

SQLServer2008_CertPath_Complete


Mais uma que não conhecia, sempre temos algo para aprender 🙂

O GROUP BY ALL mostra a soma dos valores “ZERADOS” desconsiderando o filtro do WHERE

SELECT collation_name as COLLATION, COUNT(*) as [COUNT]
FROM sys.databases
WHERE collation_name = 'SQL_Latin1_General_CP1_CI_AS'
GROUP BY ALL collation_name

COLLATION                    COUNT
---------------------------- -----------
Latin1_General_CI_AS         0
Latin1_General_CI_AS_KS_WS   0
SQL_Latin1_General_CP1_CI_AS 5

(3 row(s) affected)

Hoje estava estudando para certificação 70-433 descobri algo que desconhecia até então, é possivel fazer uma soma “SUM”, média “AVG”, etc sobre um conjunto ou subconjunto de registros… Melhor ver na pratica…

SELECT
	[database_id]
	,[name]
	,[compatibility_level]
	,COUNT(*) OVER() as [QTD_TOTAL_DATABASES]
	,COUNT(*) OVER(partition by [compatibility_level]) as [QTD_TOTAL_DATABASES_DO_MESMO_COMPLEVEL]
FROM SYS.databases
ORDER BY [database_id]




REF: http://msdn.microsoft.com/en-us/library/ms189461.aspx