Array
(
)

Pesquisar no compo SmallDateTime?

Joule
   - 08 jan 2007

Olá pessoal estou tendo um problema para pesquisar e agrupar somente a data em um campo SmallDateTime... alguém teria alguma dica?

Emerson
   - 08 jan 2007

não entendi... especifique melhor.

Joule
   - 08 jan 2007

É assim: eu quero pesquisar uma determinada data no campos SmallDateTime no banco de dados ele salva assim dd/mm/yyyy hh:mm:ss... ai quando eu quero fazer uma pesquisar do dia 01/01/2007 e agrupar por essa data ele me retorna assim:
01/01/2007 11:10:00
01/01/2007 11:23:00
01/01/2007 12:20:00 e assim por diante eu gostaria q ele me retornasse somente a data sem a hora.

Emerson
   - 08 jan 2007

deve ser algo assim:
#Código

select
  convert(char(10), campo_data, 103) Dia,
  [lista de campos]
from
  tabela
where
  [...]
group by
  convert(char(10), campo_data, 103) // aqui vc não apelida o campo
order by
  1 // aqui foi usado o número do elemento, que informa que deve ser ordenado pelo campo virtual "Dia"

na função convert você pode usar outro tipo diferente de char(10) , conforme sua necessidade.

Joule
   - 08 jan 2007

Eu já tentei usar o convert só q na hora que eu vou fazer a pesquisar ele pega somente o dia e retorna todos os meses que existe no banco de dados... exemplo:
quero o dia 01/01/2006
ele me retorna:
01/01/2006
01/02/2006
01/03/2006
.
.
. assim por diante

Emerson
   - 08 jan 2007

nos ajude a lhe ajudar:
publique a sua instrução para podermos dar uma solução completa.

Joule
   - 08 jan 2007

select convert(char(10), data, 103) from Pedido
where convert(char(10), data, 103) between ´01/01/2006´ and ´03´/01/2006´
group by data

Emerson
   - 08 jan 2007

preste atenção na instrução que eu te passei. olhe bem o que está na cláusula group by.

Joule
   - 13 jan 2007

Ok.... estou usando esse aqui:

SELECT CodNotaFiscal, convert(char(10), DataEmissao, 103) as Data
FROM NotaFiscal
where DataEmissao between ´01/11/2006´ and ´05/11/2006´
Group by CodNotaFiscal, convert(char(10), DataEmissao, 103)
Order by 2

Com esse select ele tá me retornando todos os meses com os dias que iniciam de 1 a 5, ele só está selecionando o dia nem o mês nem o ano ele tá retornando o que eu desejo. O q pode estar errado?

Macario
   - 16 jan 2007

Olá,

nesta sua ultima instrução voce nao conseguira agrupar por data, tendo o campo codnotafiscal.

Veja:

CodNota-------Data
10--------------02/01/2007
11--------------02/01/2007
12--------------03/01/2007
13--------------04/01/2007
14--------------04/01/2007

Qual sua real necessidade de informaçao sobre as notas lançadas?

Emerson
   - 16 jan 2007


Citação:
Ok.... estou usando esse aqui:

SELECT CodNotaFiscal, convert(char(10), DataEmissao, 103) as Data
FROM NotaFiscal
where DataEmissao between ´01/11/2006´ and ´05/11/2006´
Group by CodNotaFiscal, convert(char(10), DataEmissao, 103)
Order by 2

Com esse select ele tá me retornando todos os meses com os dias que iniciam de 1 a 5, ele só está selecionando o dia nem o mês nem o ano ele tá retornando o que eu desejo. O q pode estar errado?

a passagem de datas deve ser no formato americano: MM/DD/YYYY, portant,o sua instrução deveria ser:
#Código

SELECT
  CodNotaFiscal, convert(char(10), DataEmissao, 103) as Data
FROM
  NotaFiscal
where
  DataEmissao between ´11/01/2006´ and ´11/05/2006´
Group by
  CodNotaFiscal, convert(char(10), DataEmissao, 103)
Order by
  2

p.s: atente-se também à colocação do colega Macario