code

SQL 날짜 선택

codestyles 2020. 11. 20. 09:00
반응형

SQL 날짜 선택


판매 보고서의 두 범위 사이에서 데이터를 선택하기 위해 sqlite를 실행하고 있습니다. 두 날짜 사이의 데이터를 선택하려면 다음 문을 사용합니다.

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

이 문은 기준을 벗어난 날짜도 모두 포함합니다. 입력하신 날짜 형식은 제가받은 것과 동일한 형식입니다. 무엇이 잘못되었는지는 잘 모르겠지만 도움을 주시면 감사하겠습니다. 감사!


SQLLite는 날짜 YYYY-MM-DD형식이 필요 합니다. 데이터베이스의 데이터와 쿼리의 문자열이 해당 형식이 아니므로 "날짜"를 문자열로 취급 할 수 있습니다.


sqlite datetime 형식 을 사용하려면 데이터를 해당 형식으로 변경하십시오 .

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'

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', ...)

하지만 더 많은 선택권을 원하면 선택할 수 있습니다.


또는 날짜 함수 를 사용하여 문자열을 날짜 형식으로 캐스팅 할 수 있습니다 . 날짜조차도 DB에 TEXT로 저장됩니다. 다음과 같이 (가장 실행 가능한 변형) :

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

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')

다음 형식을 사용합니다. dd/mm/yyyy

d / m / yyyy를 사용하는 경우 변경 substr()

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


Jeffvapcguy 에게 특별히 감사드립니다 . 당신의 상호 작용은 정말 고무적입니다.

다음은 '/'사이의 길이를 알 수 없을 때 유용한 더 복잡한 명령문입니다.

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') 

참고 URL : https://stackoverflow.com/questions/8187288/sql-select-between-dates

반응형