복붙노트

[SQL] SQL 문은 전날 모든 행을 선택합니다

SQL

SQL 문은 전날 모든 행을 선택합니다

나는 하나 개의 테이블에서 전날 모든 행을 선택하는 것이 SQL 문을 찾고 있는데요. 테이블은 하나의 날짜 열을 보유하고 있습니다. 나는 SQL 서버 2005을 사용하고 있습니다.

해결법

  1. ==============================

    1.오늘을 시간을 얻을 :

    오늘을 시간을 얻을 :

    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)
    
  2. ==============================

    2.SQL의 "오늘"값을 얻으려면 :

    SQL의 "오늘"값을 얻으려면 :

    convert(date, GETDATE())
    

    "어제"얻으려면 :

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

    GET "오늘 마이너스 X의 일"하려면 변경 -1 -X로.

    어제의 행에 대해 그래서, 당신은 얻을 :

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

    3.그것의 명백한 대답이 없어진 것 같다. 열 (DatetimeColumn는) 다음과 같은 쿼리를 사용할 수있는 타임 스탬프와 날짜입니다 테이블 (Ttable)에서 모든 데이터를 얻으려면 :

    그것의 명백한 대답이 없어진 것 같다. 열 (DatetimeColumn는) 다음과 같은 쿼리를 사용할 수있는 타임 스탬프와 날짜입니다 테이블 (Ttable)에서 모든 데이터를 얻으려면 :

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

    이것은 쉽게 오늘, 지난 달, 지난 해 등으로 변경 될 수 있습니다

  4. ==============================

    4.

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

    5.그것 정말 오래된 스레드,하지만 여기에 내 걸릴 것입니다. 보다는 2 절 다른 하나 개보다 크고 미만. 나는 일에서 레코드를 선택하는 구문 이하로 사용합니다. 당신이 날짜 범위를 원한다면 이전의 대답은 길을 가야하는 것입니다.

    그것 정말 오래된 스레드,하지만 여기에 내 걸릴 것입니다. 보다는 2 절 다른 하나 개보다 크고 미만. 나는 일에서 레코드를 선택하는 구문 이하로 사용합니다. 당신이 날짜 범위를 원한다면 이전의 대답은 길을 가야하는 것입니다.

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

    위의 경우 X가 될 것입니다 -1 어제의 기록을 위해

  6. ==============================

    6.지금 테스트,하지만 할 수 없습니다 :

    지금 테스트,하지만 할 수 없습니다 :

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

    7.이것은을 수행해야합니다

    이것은을 수행해야합니다

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

    8.SQL 서버에서 다음과 같이 수행

    SQL 서버에서 다음과 같이 수행

    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)
    
  9. ==============================

    9.또 다른 방법은 "어제"그에게 ...

    또 다른 방법은 "어제"그에게 ...

    Select * from TABLE
    where Day(DateField) = (Day(GetDate())-1)
    and Month(DateField) = (Month(GetDate()))
    and Year(DateField) = (Year(getdate()))
    

    이것은 생각할 년 1 월 1 일 잘 작동뿐만 아니라, 매월 첫날하지 않습니다. 그러나 그것이 효과적 비행에.

  10. ==============================

    10.글쎄, 그것 쉽게 날짜와 비교보다 날짜 열을 캐스팅합니다.

    글쎄, 그것 쉽게 날짜와 비교보다 날짜 열을 캐스팅합니다.

    SELECT * FROM TABLE_NAME WHERE cast(COLUMN_NAME as date) = 
       dateadd(day,0, convert(date, getdate(), 105)) 
    
  11. ==============================

    11.어제 타임 스탬프를 반환합니다 (1) (지금) SUBDATE 코드 아래는 어제의 타임 스탬프가 모든 행을 선택합니다

    어제 타임 스탬프를 반환합니다 (1) (지금) SUBDATE 코드 아래는 어제의 타임 스탬프가 모든 행을 선택합니다

    Select * FROM `login` WHERE `dattime` <= subdate(now(),1) AND `dattime` > subdate(now(),2)
    
  12. from https://stackoverflow.com/questions/1503298/sql-statement-to-select-all-rows-from-previous-day by cc-by-sa and MIT license