Estou procurando uma boa instrução SQL para selecionar todas as linhas do dia anterior de uma tabela. A tabela contém uma coluna datetime. Estou usando o SQL Server 2005.
sql
sql-server
sql-server-2005
rudimentador
fonte
fonte
SELECT *
retornará todas as datas com os horários originais.SELECT getdate(),dateadd(day,datediff(day,1,GETDATE()),0)
, obtenho:2016-02-01 10:27:54.733 2016-01-31 00:00:00.000
Para obter o valor "today" no SQL:
Para obter "ontem":
Para obter "hoje menos X dias": mude -1 para -X.
Portanto, para todas as linhas de ontem, você obtém:
fonte
Parece que a resposta óbvia estava faltando. Para obter todos os dados de uma tabela (Ttable) onde a coluna (DatetimeColumn) é um datetime com um timestamp, a seguinte consulta pode ser usada:
Isso pode ser facilmente alterado para hoje, mês passado, ano passado, etc.
fonte
DatetimeColumn BETWEEN DATEADD(day, DATEDIFF(day, 1, GETDATE()) ,0) AND DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
o valor de DATEDIFF () em cada linhafonte
É um tópico muito antigo, mas aqui está minha opinião sobre ele. Em vez de 2 cláusulas diferentes, uma maior que e menor que. Eu uso a sintaxe abaixo para selecionar registros de uma data. Se você quiser um intervalo de datas, as respostas anteriores são o caminho a percorrer.
No caso acima, X será -1 para os registros de ontem
fonte
Não posso testar agora, mas:
fonte
Isso deve servir:
fonte
No SQL Server, faça assim:
Você deve converter ambos os lados da expressão para a data para evitar problemas com a formatação de hora.
Se você precisa controlar o intervalo com mais detalhes, você deve tentar algo como:
fonte
Outra forma de dizer "Ontem" ...
Isso provavelmente não funcionará bem em 1º de janeiro, bem como no primeiro dia de cada mês. Mas na hora é eficaz.
fonte
Bem, é mais fácil lançar a coluna datetime para a data e do que comparar.
fonte
subdate (now (), 1) irá retornar a data e hora de ontem O código abaixo irá selecionar todas as linhas com a data e hora de ontem
fonte