한 테이블에서 전날의 모든 행을 선택하는 좋은 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