[sql] 전날의 모든 행을 선택하는 SQL 문

한 테이블에서 전날의 모든 행을 선택하는 좋은 SQL 문을 찾고 있습니다. 테이블에는 하나의 datetime 열이 있습니다. SQL Server 2005를 사용하고 있습니다.



답변

오늘은 시간이 없다 :

SELECT dateadd(day,datediff(day,0,GETDATE()),0)

어제 시간 없음 :

SELECT dateadd(day,datediff(day,1,GETDATE()),0)

어제의 모든 행에 대한 쿼리 :

select
    *
    from yourTable
    WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
        AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)


답변

SQL에서 “오늘”값을 얻으려면 :

convert(date, GETDATE())

“어제”를 얻으려면 :

DATEADD(day, -1, convert(date, GETDATE()))

“오늘 마이너스 X 일”을 얻으려면 -1을 -X로 변경하십시오.

따라서 어제의 모든 행에 대해 다음을 얻습니다.

select * from tablename
   where date >= DATEADD(day, -1, convert(date, GETDATE()))
   and date < convert(date, GETDATE())


답변

분명한 대답이 누락 된 것 같습니다. 열 (DatetimeColumn)이 타임 스탬프가있는 datetime 인 테이블 (Ttable)에서 모든 데이터를 가져 오려면 다음 쿼리를 사용할 수 있습니다.

SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday

오늘, 지난달, 작년 등으로 쉽게 변경할 수 있습니다.


답변

SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);


답변

정말 오래된 실이지만 여기에 내 의견이 있습니다. 2 개의 다른 절이 아니라 하나는보다 크거나 작습니다. A 날짜에서 레코드를 선택하기 위해 아래 구문을 사용합니다. 날짜 범위를 원하면 이전 답변을 사용하는 것이 좋습니다.

SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0

위의 경우 X는 어제 기록에 대해 -1이됩니다.


답변

지금은 테스트 할 수 없지만 :

select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)


답변

이렇게해야합니다.

WHERE `date` = CURDATE() - INTERVAL 1 DAY