Usuário com melhor resposta
WHERE para descobrir o ano atual de uma data

Pergunta
-
Olá pessoal,
Preciso de uma ajuda de vocês com relação a uma dúvida do SQL Server 2008.
Tenho a seguinte query:
SELECT
PROJ_NAME,
ProjectOwnerName,
YEAR(ProjectFinishDate),
FROM ProjectServer_Published.dbo.MSP_PROJECTS,ProjectServer_Reporting.dbo.MSP_EpmProject_UserViewGostaria de extrair da coluna ProjectFinishDate os projetos do ano atual - "2014".
É possível fazer essa ação utilizando apenas este campo? Se houver uma forma mais prática e puderem compartilhar também agradeço.
Obrigado.
Obrigado por contactar o fórum Microsoft Technet!
Respostas
-
Deleted
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Meu amigo,
Não sei se entendi o problema, mas você pode apenas adicionar a condiçao na cláusula WHERE.
Segue abaixo um exemplo para você adaptar à sua necessidade:
SELECT PROJ_NAME, ProjectOwnerName, YEAR(ProjectFinishDate) FROM ProjectServer_Published.dbo.MSP_PROJECTS,ProjectServer_Reporting.dbo.MSP_EpmProject_UserView WHERE YEAR(ProjectFinishDate) = 2014 GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
-- Adicione a clausula WHRE no seu SELECT WHERE YEAR(ProjectFinisdDate) = YEAR(GETDATE()) -- Se for algo mais "Avançado" para seu select, faça uma CTE -- Como vi que no seu select contém mais de uma tabela, utilize uma CTE ;WITH CTE_TMP (PROJ_NAME, ProjectFinishDate) AS -- Define the CTE query. (SELECT PROJ_NAME ,ProjectFinishDate FROM ProjectServer_Published.dbo.MSP_PROJECTS WHERE YEAR(ProjectFinisdDate) = YEAR(GETDATE()) ) SELECT PROJ_NAME, ProjectOwnerName, YEAR(ProjectFinishDate), FROM CTE_TMP,ProjectServer_Reporting.dbo.MSP_EpmProject_UserView
**************************************************************************************
Sempre lembre de marcar a resposta se ela foi útil.
Tks.
- Editado Demetrius Quadros quarta-feira, 12 de novembro de 2014 11:27
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Durval e Demetrius obrigado pela resposta.
Ainda não consegui realizar a operação para identificar o anual com base na data daquele campo.
Tentei as seguintes situações:
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = YEAR(GETDATE())
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = 2014
YEAR(ProjectFinishDate) = year(current_timestamp)
Existe outra forma?
Obrigado pela ajuda.
Obrigado por contactar o fórum Microsoft Technet!
Meu amigo,
Será que esta coluna é do tipo "date" ou "datetime"?
Faça um teste convertendo a coluna, segue um exemplo abaixo:
YEAR(CONVERT(date,EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate)) = YEAR(GETDATE())
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Hezequias,
Então não é necessário converter.
Vamos investigar o que pode estar ocorrendo.
Execute este T-SQL abaixo e veja os anos que aparecem com estas condições de pesquisa:
SELECT DISTINCT YEAR(ProjectFinishDate) FROM ProjectServer2010_Published.dbo.MSP_PROJECTS, ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView WHERE MSP_PROJECTS.PROJ_UID = ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectUID AND ([Situacao] = 'Encerrado' OR ProjectPercentCompleted = 100) AND [Tipo]='Project' AND [Pesquisa]='Sim' GO
Se não aparecer o ano de 2014, reveja às condições em negrito. A idéia é verificar se alguma destas condições, por algum motivo, eliminam o ano de 2014 e deste modo você não obtém o resultado esperado.
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Zeca Lima, não vejo a necessidade de conversão pois a função YEAR retorna um valor inteiro da data, mesmo que o campo seja datetime ele irá extrair somente o ano da data correspondente.
SELECT BusinessEntityID ,
RateChangeDate ,
Rate ,
PayFrequency ,
ModifiedDate
FROM HumanResources.EmployeePayHistory (NOLOCK) WHERE YEAR(RateChangeDate) = 2003no meu carro aqui retornou normalmente os valores
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Qual o tipo do campo ProjectFinishDate ? Nos passe seu select para que possamos auxiliar melhor.
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
Todas as Respostas
-
Meu amigo,
Não sei se entendi o problema, mas você pode apenas adicionar a condiçao na cláusula WHERE.
Segue abaixo um exemplo para você adaptar à sua necessidade:
SELECT PROJ_NAME, ProjectOwnerName, YEAR(ProjectFinishDate) FROM ProjectServer_Published.dbo.MSP_PROJECTS,ProjectServer_Reporting.dbo.MSP_EpmProject_UserView WHERE YEAR(ProjectFinishDate) = 2014 GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
-- Adicione a clausula WHRE no seu SELECT WHERE YEAR(ProjectFinisdDate) = YEAR(GETDATE()) -- Se for algo mais "Avançado" para seu select, faça uma CTE -- Como vi que no seu select contém mais de uma tabela, utilize uma CTE ;WITH CTE_TMP (PROJ_NAME, ProjectFinishDate) AS -- Define the CTE query. (SELECT PROJ_NAME ,ProjectFinishDate FROM ProjectServer_Published.dbo.MSP_PROJECTS WHERE YEAR(ProjectFinisdDate) = YEAR(GETDATE()) ) SELECT PROJ_NAME, ProjectOwnerName, YEAR(ProjectFinishDate), FROM CTE_TMP,ProjectServer_Reporting.dbo.MSP_EpmProject_UserView
**************************************************************************************
Sempre lembre de marcar a resposta se ela foi útil.
Tks.
- Editado Demetrius Quadros quarta-feira, 12 de novembro de 2014 11:27
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Durval e Demetrius obrigado pela resposta.
Ainda não consegui realizar a operação para identificar o anual com base na data daquele campo.
Tentei as seguintes situações:
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = YEAR(GETDATE())
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = 2014
YEAR(ProjectFinishDate) = year(current_timestamp)
Existe outra forma?
Obrigado pela ajuda.
Obrigado por contactar o fórum Microsoft Technet!
-
Qual o tipo do campo ProjectFinishDate ? Nos passe seu select para que possamos auxiliar melhor.
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Durval e Demetrius obrigado pela resposta.
Ainda não consegui realizar a operação para identificar o anual com base na data daquele campo.
Tentei as seguintes situações:
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = YEAR(GETDATE())
YEAR(EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate) = 2014
YEAR(ProjectFinishDate) = year(current_timestamp)
Existe outra forma?
Obrigado pela ajuda.
Obrigado por contactar o fórum Microsoft Technet!
Meu amigo,
Será que esta coluna é do tipo "date" ou "datetime"?
Faça um teste convertendo a coluna, segue um exemplo abaixo:
YEAR(CONVERT(date,EPM2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate)) = YEAR(GETDATE())
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Demetrius,
O select completo utilizado foi esse:
SELECT
PROJ_NAME,
ProjectOwnerName,
YEAR(ProjectFinishDate),
year(current_timestamp),
YEAR(ProjectFinishDate) - year(current_timestamp)
FROM ProjectServer2010_Published.dbo.MSP_PROJECTS, ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView
WHERE
MSP_PROJECTS.PROJ_UID = ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectUID AND
[Situacao] = 'Encerrado' OR ProjectPercentCompleted = 100 AND
[Tipo]='Project' AND
[Pesquisa]='Sim' AND
YEAR(CONVERT(date,ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectFinishDate)) = YEAR(GETDATE())Obrigado.
Obrigado por contactar o fórum Microsoft Technet!
-
-
Hezequias,
Então não é necessário converter.
Vamos investigar o que pode estar ocorrendo.
Execute este T-SQL abaixo e veja os anos que aparecem com estas condições de pesquisa:
SELECT DISTINCT YEAR(ProjectFinishDate) FROM ProjectServer2010_Published.dbo.MSP_PROJECTS, ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView WHERE MSP_PROJECTS.PROJ_UID = ProjectServer2010_Reporting.dbo.MSP_EpmProject_UserView.ProjectUID AND ([Situacao] = 'Encerrado' OR ProjectPercentCompleted = 100) AND [Tipo]='Project' AND [Pesquisa]='Sim' GO
Se não aparecer o ano de 2014, reveja às condições em negrito. A idéia é verificar se alguma destas condições, por algum motivo, eliminam o ano de 2014 e deste modo você não obtém o resultado esperado.
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Zeca Lima, não vejo a necessidade de conversão pois a função YEAR retorna um valor inteiro da data, mesmo que o campo seja datetime ele irá extrair somente o ano da data correspondente.
SELECT BusinessEntityID ,
RateChangeDate ,
Rate ,
PayFrequency ,
ModifiedDate
FROM HumanResources.EmployeePayHistory (NOLOCK) WHERE YEAR(RateChangeDate) = 2003no meu carro aqui retornou normalmente os valores
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-
Deleted
- Marcado como Resposta Hezequias Vasconcelos quarta-feira, 12 de novembro de 2014 13:38
-