[SQL] SQLite는 날짜를 비교
SQLSQLite는 날짜를 비교
나는이 SQL 문이 :
SELECT Geburtsdatum FROM Kunde
WHERE Geburtsdatum BETWEEN '1993-01-01' AND '2000-01-01'
하지만 내가 좋아하는 몇 가지 이상한 결과를 얻을 : 1990년 2월 2일
'탄생'은 DATE입니다
어떤 제안 또는 솔루션?
내 테이블 구조 :
CREATE TABLE Kunde (
Kunde_ID INTEGER NOT NULL ,
Card INTEGER ,
Vorname VARCHAR(255) NOT NULL ,
Nachname VARCHAR(255) NOT NULL ,
Ort VARCHAR(255) NOT NULL ,
Strasse VARCHAR(255) NOT NULL ,
Postleitzahl VARCHAR(10) NOT NULL ,
Mail VARCHAR(255) ,
Telefonnummer VARCHAR(255) ,
Geburtsdatum DATE NOT NULL ,
Beitrittsdatum DATE NOT NULL ,
Geschlecht INTEGER NOT NULL ,
Land VARCHAR(255) NOT NULL DEFAULT 'Österreich' ,
Bankname VARCHAR(255) ,
Bankleitzahl VARCHAR(255) ,
Kontonummer VARCHAR(255) ,
GroupID INTEGER NOT NULL ,
Besucher INTEGER ,
Access BOOLEAN ,
image BLOB NULL ,
writeDate DATE ,
drinkAbo BOOLEAN ,
PRIMARY KEY (Kunde_ID) )
해결법
-
==============================
1.문서에서 :
문서에서 :
그래서 열은 정확하게 날짜로 저장되지 않습니다. 더 읽기, 우리는 DATE로를 지정된 열이 실제로 선호도 규칙 5를 사용하여 숫자로 저장되는 것을 배웁니다.
1.2 절을 다시 올라가고 :
좋은. 그럼 해보자 :
SELECT Geburtsdatum FROM Kunde WHERE Geburtsdatum BETWEEN julianday('1993-01-01') AND julianday('2000-01-01');
이상한 일이지만, SQL 바이올린 문자열로 저장 날짜 보인다 그리고 위의 작업을하지 않습니다. 이 경우, 다음을 수행해야합니다
SELECT Geburtsdatum FROM Kunde WHERE date(Geburtsdatum) BETWEEN date('1993-01-01') AND date('2000-01-01');
또한, 귀하의 경우 일부 이상한을 받고있는 것으로 보인다 (읽기 : 지역화 된) 형식으로 반환. 그것은 정말 그냥 다른 형식으로도 귀하의 경우 문자열입니다 있는지 궁금해. 당신이 시도 할 수 :
SELECT Geburtsdatum FROM Kunde WHERE strftime('%d.%m.%Y', Geburtsdatum) BETWEEN date('1993-01-01') AND date('2000-01-01');
-
==============================
2.누군가가 같은 문제를 가지고 그것을 해결되었다. (비교 이전 날짜 함수를 사용)
누군가가 같은 문제를 가지고 그것을 해결되었다. (비교 이전 날짜 함수를 사용)
SQLite는 날짜 시간 비교를 참조
발췌 : 날짜 시간 함수를 다음과 YYYY-MM-DD HH 같은 문자열 포맷 갖는 mm 다음과 같다 : SS 난 좋은 결과를 얻을
select * from table_1 where mydate >= Datetime('2009-11-13 00:00:00') and mydate <= Datetime('2009-11-15 00:00:00')
--편집하다--
당신은 기본적으로 문자열을 비교한다. 어떤 이유 예상치 못한 동작입니다. 바로 비교하기 전에 기능을 사용하여 날짜로 변환하고 그것을 작동합니다.
-
==============================
3.날짜를 비교할 수 있으려면 이러한 JJJJ-MM-TT 문자열로 SQLite는의 지원 날짜 형식 중 하나에 저장해야합니다. 날짜는 SQLite는 인식되지 않는 지역화 된 날짜 형식 문자열로 저장됩니다.
날짜를 비교할 수 있으려면 이러한 JJJJ-MM-TT 문자열로 SQLite는의 지원 날짜 형식 중 하나에 저장해야합니다. 날짜는 SQLite는 인식되지 않는 지역화 된 날짜 형식 문자열로 저장됩니다.
가장 중요한 필드는 문자열의 시작이 아닌 경우, 문자열 비교는 날짜에 대해 작동하지 않습니다. 테이블의 현재 값으로, 당신은 어떤 비교를 할 수 없을 것입니다.
from https://stackoverflow.com/questions/13091000/sqlite-compare-dates by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #에서 저장된 프로 시저에서 여러 레코드를 반환 (0) | 2020.07.02 |
---|---|
[SQL] 서열 값에 의해 그룹 (0) | 2020.07.02 |
[SQL] 오라클 SQL Developer를 사용하여 텍스트 파일에 CLOB 내보내기 (0) | 2020.07.02 |
[SQL] INSERT INTO는 그렇지 않은 경우 SQL 서버에 존재 (0) | 2020.07.02 |
[SQL] SQL 행이 PHP 존재하는지 확인 (0) | 2020.07.02 |