전날의 모든 행을 선택하는 SQL 문
하나의 테이블에서 전날의 모든 행을 선택할 수 있는 좋은 SQL 문을 찾고 있습니다.테이블에는 datetime 열이 1개 있습니다.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())
분명한 답이 빠진 것 같다.열(Datetime Column)이 타임스탬프가 있는 날짜인 테이블(Table)에서 모든 데이터를 가져오려면 다음 쿼리를 사용할 수 있습니다.
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);
정말 오래된 이야기지만, 제 생각은 이렇습니다.두 개의 다른 절이 아니라 하나는 더 크고 하나는 더 작습니다.A 날짜에서 레코드를 선택할 때 아래의 구문을 사용합니다.날짜 범위를 원하는 경우 이전 답변이 좋습니다.
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
위의 경우 X는 어제의 기록에 대해 -1이 됩니다.
이것으로 충분합니다.
WHERE `date` = CURDATE() - INTERVAL 1 DAY
지금은 테스트할 수 없지만:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
SQL Server에서 다음을 수행합니다.
where cast(columnName as date) = cast(getdate() -1 as date)
시간 형식 문제를 방지하려면 표현식의 양면을 현재까지 캐스팅해야 합니다.
간격을 보다 상세하게 제어할 필요가 있는 경우는, 다음과 같은 조작을 실시할 필요가 있습니다.
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
'어제'라고 하면...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
이것은 아마도 매달 1월 1일뿐만 아니라 1월 1일에도 잘 작동하지 않을 것이다.하지만 즉석에서 그것은 효과적이다.
날짜/시간 열을 현재까지 캐스팅하고 비교하는 것보다 쉽습니다.
SELECT * FROM TABLE_NAME WHERE cast(COLUMN_NAME as date) =
dateadd(day,0, convert(date, getdate(), 105))
간단한 대안
Select GETDATE() - 1
1을 변경하여 그 일수를 되돌립니다.
PS : 타임스탬프의 정확성을 얻을 수 있습니다.
이 방법은 효과가 있었습니다.
SELECT * FROM mytable WHERE date(mydate) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
subdate(now()),1은 어제의 타임스탬프를 반환한다.아래 코드는 어제의 타임스탬프가 있는 모든 행을 선택합니다.
Select * FROM `login` WHERE `dattime` <= subdate(now(),1) AND `dattime` > subdate(now(),2)
언급URL : https://stackoverflow.com/questions/1503298/sql-statement-to-select-all-rows-from-previous-day
'programing' 카테고리의 다른 글
iOS 시뮬레이터용 빌딩이지만 링크 프레임워크 '***.framework'는 iOS용으로 구축되었습니다. (0) | 2023.04.19 |
---|---|
Tuples 목록을 쉽게 초기화하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
String을 Int로 변환하려면 어떻게 해야 하나요? (0) | 2023.04.19 |
MS Excel 버전 관리를 하는 최선의 방법 (0) | 2023.04.19 |
인증서와 개인 키로 .pfx 파일을 만드는 방법 (0) | 2023.04.19 |