복붙노트

[SQL] 날짜 사이 SQL 선택

SQL

날짜 사이 SQL 선택

나는 영업 보고서에 대해 두 범위 사이에서 데이터를 선택하는 SQLite는 실행하고 있습니다. 나는 다음과 같은 문을 사용하여 두 날짜 사이에서 데이터를 선택합니다 :

SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";

이 문은 기준 모든 날짜를 심지어 외부를 잡고. 입력 참조 날짜 형식은 내가 돌아올 것과 같은 형식으로되어 있습니다. 나는 확실히 뭐가 잘못 아니에요하지만 난 찾을 수있는 모든 도움을 주셔서 감사합니다. 감사!

해결법

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

    1.SQLite는은 YYYY-MM-DD 형식으로 날짜를 필요로한다. 데이터베이스에있는 데이터와 쿼리 문자열이 그 형식이 아니기 때문에, 아마 문자열로 "날짜"를 치료한다.

    SQLite는은 YYYY-MM-DD 형식으로 날짜를 필요로한다. 데이터베이스에있는 데이터와 쿼리 문자열이 그 형식이 아니기 때문에, 아마 문자열로 "날짜"를 치료한다.

  2. ==============================

    2.SQLite는 날짜 형식을 사용하는 형식으로 데이터를 변경합니다.

    SQLite는 날짜 형식을 사용하는 형식으로 데이터를 변경합니다.

    YYYY-MM-DD
    YYYY-MM-DD HH:MM
    YYYY-MM-DD HH:MM:SS
    YYYY-MM-DD HH:MM:SS.SSS
    YYYY-MM-DDTHH:MM
    YYYY-MM-DDTHH:MM:SS
    YYYY-MM-DDTHH:MM:SS.SSS
    HH:MM
    HH:MM:SS
    HH:MM:SS.SSS
    now
    DDDDDDDDDD
    
    SELECT * FROM test WHERE date BETWEEN '2011-01-11' AND '2011-08-11'
    
  3. ==============================

    3.SQLite는에 날짜 사이 선택하는 또 하나의 방법은 강력한은 strftime 기능을 사용하는 것입니다 :

    SQLite는에 날짜 사이 선택하는 또 하나의 방법은 강력한은 strftime 기능을 사용하는 것입니다 :

    SELECT * FROM test WHERE strftime('%Y-%m-%d', date) BETWEEN "11-01-2011" AND "11-08-2011"
    

    이들은 https://sqlite.org/lang_datefunc.html에 따라 동일합니다

    date(...)
    
    strftime('%Y-%m-%d', ...)
    

    당신은 더 많은 선택을 원한다면, 당신은 그것이있다.

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

    4.또는 당신은 최신 기능을 날짜 형식으로 문자열을 캐스팅 할 수 있습니다. 심지어 날짜는 DB에서 텍스트로 저장됩니다. 이 (가장 가능한 변형)처럼 :

    또는 당신은 최신 기능을 날짜 형식으로 문자열을 캐스팅 할 수 있습니다. 심지어 날짜는 DB에서 텍스트로 저장됩니다. 이 (가장 가능한 변형)처럼 :

    SELECT * FROM test WHERE date(date) 
    BETWEEN date('2011-01-11') AND date('2011-8-11')
    
  5. ==============================

    5.

    SELECT *
    FROM TableName
    WHERE julianday(substr(date,7)||'-'||substr(date,4,2)||'-'||substr(date,1,2)) BETWEEN julianday('2011-01-11') AND julianday('2011-08-11')
    

    참고 나는 형식을 사용하는 것이 : 일 / 월 / 년을

    당신은 D / m / 년을 사용하는 경우, SUBSTR의 변화 ()

    이 당신을 도울 것입니다 바랍니다.

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

    6.특별 감사 제프와 vapcguy 당신의 상호 작용은 정말 고무적이다.

    특별 감사 제프와 vapcguy 당신의 상호 작용은 정말 고무적이다.

    여기 사이의 길이가 '/'알 수없는 경우에 유용 더 복잡한 문입니다 ::

    SELECT * FROM tableName
    WHERE julianday(
        substr(substr(date, instr(date, '/')+1), instr(substr(date, instr(date, '/')+1), '/')+1)
    ||'-'||
        case when length(
        substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1),'/')-1)
        )=2
        then
        substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1), '/')-1)
        else
        '0'||substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1), '/')-1)
        end
    ||'-'||
        case when length(substr(date,1, instr(date, '/')-1 )) =2
        then substr(date,1, instr(date, '/')-1 )
        else
        '0'||substr(date,1, instr(date, '/')-1 )
        end
    ) BETWEEN julianday('2015-03-14') AND julianday('2015-03-16') 
    
  7. from https://stackoverflow.com/questions/8187288/sql-select-between-dates by cc-by-sa and MIT license