Específica Intervalo de tempo de consulta no SQL Server

votos
14

Eu estou tentando consultar um intervalo de tempo específico:

  • ie 3/1/2009 - 2009/03/31
  • entre 06:00-10:00 cada dia
  • única ter / qua / qui

Eu vi que você pode obter dados para um intervalo particular, mas apenas para início ao fim e isso é um pouco mais específico. Eu não vi quaisquer comandos do SQL Server que iria diretamente me ajudar nisso, o mesmo acontece com qualquer outra pessoa tem alguma opinião sobre como você se formar este?

Eu já vi isso , mas eu não acho que é quase específico o suficiente para esta faixa.

Obrigado!

Publicado 19/05/2009 em 22:43
fonte usuário
Em outras línguas...                            


4 respostas

votos
24

Eu estou supondo que você quer todos os três daqueles como parte dos critérios de selecção. Você vai precisar de algumas declarações em sua onde, mas eles serão semelhante ao link sua pergunta contida.

SELECT *
  FROM MyTable
  WHERE [dateColumn] > '3/1/2009' AND [dateColumn] <= DATEADD(day,1,'3/31/2009') 
        --make it inclusive for a datetime type
    AND DATEPART(hh,[dateColumn]) >= 6 AND DATEPART(hh,[dateColumn]) <= 22 
        -- gets the hour of the day from the datetime
    AND DATEPART(dw,[dateColumn]) >= 3 AND DATEPART(dw,[dateColumn]) <= 5 
        -- gets the day of the week from the datetime

Espero que isto ajude.

Respondeu 19/05/2009 em 22:59
fonte usuário

votos
5

você pode tentar isso (eu não tenho sql server aqui hoje, então não posso verificar sintaxe, sorry)

select attributeName
  from tableName
 where CONVERT(varchar,attributeName,101) BETWEEN '03/01/2009' AND '03/31/2009'
   and CONVERT(varchar, attributeName,108) BETWEEN '06:00:00' AND '22:00:00'
   and DATEPART(day,attributeName) BETWEEN 2 AND 4
Respondeu 19/05/2009 em 23:12
fonte usuário

votos
0

I (usando PostgrSQL em PGadmin4) consultado para resultados que são depois ou em 21 novembro de 2017 ao meio-dia, como esta (considerando o formato de exibição de horas no meu banco de dados):

select * from Table1 where FIELD >='2017-11-21 12:00:00' 
Respondeu 23/11/2017 em 07:43
fonte usuário

votos
0
select * from table where 
(dtColumn between #3/1/2009# and #3/31/2009#) and 
(hour(dtColumn) between 6 and 22) and 
(weekday(dtColumn, 1) between 2 and 4) 
Respondeu 19/05/2009 em 22:51
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more