복붙노트

[SQL] SQLite는 날짜 시간 비교

SQL

SQLite는 날짜 시간 비교

그래서 같은 비교 날짜 시간 문자열을 사용하여 SQLite는 데이터베이스에 대해 쿼리 신뢰할 수있는 결과를 얻을 수없는 것 :

select * 
  from table_1 
 where mydate >= '1/1/2009' and mydate <= '5/5/2009'

어떻게 sqlite가에 날짜 비교를 처리해야합니까?

최신 정보: 필드 MyDate가이 날짜 시간 데이터 형이며,

해결법

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

    1.SQLite는이 날짜 형식을 전용하지 않지만, 몇 날짜 기능을 가지고있다. 만큼 당신이하지 않는 (문자열 표현 형식을 (실제로는 1-10의 형식) (문자열로 값을 저장) 이러한 기능에 의해 이해에 따라 당신은 사용할 수 있습니다, 플러스 문자열에 대한 사전적인 비교는 날짜 비교를 일치합니다 ) 어쨌든 많은 이해하지 않는, 시간에 시간 또는 날짜 시간에 날짜를 비교하려고합니다.

    SQLite는이 날짜 형식을 전용하지 않지만, 몇 날짜 기능을 가지고있다. 만큼 당신이하지 않는 (문자열 표현 형식을 (실제로는 1-10의 형식) (문자열로 값을 저장) 이러한 기능에 의해 이해에 따라 당신은 사용할 수 있습니다, 플러스 문자열에 대한 사전적인 비교는 날짜 비교를 일치합니다 ) 어쨌든 많은 이해하지 않는, 시간에 시간 또는 날짜 시간에 날짜를 비교하려고합니다.

    당신이 사용하는 언어에 따라, 당신도 자동 변환을 얻을 수 있습니다. (예제와 같은 SQL 문에서 비교에 적용되지 않지만, 여러분의 인생을 더 쉽게 만드는 것입니다 어느.)

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

    2.이 문제를 해결하기 위해, 나는 YYYYMMDD로 날짜를 저장합니다. 그러므로,    MyDate가> = '20090101'와 MyDate가 <= '20050505'

    이 문제를 해결하기 위해, 나는 YYYYMMDD로 날짜를 저장합니다. 그러므로,    MyDate가> = '20090101'와 MyDate가 <= '20050505'

    그냥 일반 모든 시간을 작동합니다. 당신은 당신이 YYYYMMDD로 변환 할 수 있도록 사용자가 날짜를 입력하는 방법을 처리하는 파서를 작성해야 할 수도 있습니다.

  3. ==============================

    3.나는 최근에 같은 문제가 있고, 나는 이런 식으로 해결 :

    나는 최근에 같은 문제가 있고, 나는 이런 식으로 해결 :

    SELECT * FROM table WHERE 
        strftime('%s', date) BETWEEN strftime('%s', start_date) AND strftime('%s', end_date)
    
  4. ==============================

    4.다음은 SQLite는을 사용하여 나를 위해 잘 작동한다 :

    다음은 SQLite는을 사용하여 나를 위해 잘 작동한다 :

    SELECT * 
        FROM ingresosgastos 
        WHERE fecharegistro BETWEEN "2010-01-01" AND "2013-01-01"
    
  5. ==============================

    5.SQLite는 날짜에 비교할 수 없습니다. 우리는 초로 변환 할 필요가 정수로 캐스팅.

    SQLite는 날짜에 비교할 수 없습니다. 우리는 초로 변환 할 필요가 정수로 캐스팅.

    SELECT * FROM Table  
    WHERE  
    CAST(strftime('%s', date_field)  AS  integer) <=CAST(strftime('%s', '2015-01-01')  AS  integer) ;
    
  6. ==============================

    6.나를 위해 일한 다음과 같습니다.

    나를 위해 일한 다음과 같습니다.

    SELECT *
    FROM table_log
    WHERE DATE(start_time) <= '2017-01-09' AND DATE(start_time) >= '2016-12-21'
    
  7. ==============================

    7.나는 오늘이 끝날 때까지 이틀 전에와 최대의 데이터를 원하는 상황이있다. 나는 다음에 도착했다.

    나는 오늘이 끝날 때까지 이틀 전에와 최대의 데이터를 원하는 상황이있다. 나는 다음에 도착했다.

    WHERE dateTimeRecorded between date('now', 'start of day','-2 days') 
                               and date('now', 'start of day', '+1 day') 
    

    모든 데이터가 있다면 좋아, 기술적으로 또한, 원래의 포스터처럼 내일 자정에 당겨하지만 내 데이터는 모든 역사입니다.

    중요한 것은 초기 포스터 2009-11-15 0시 0분 0초 후 모든 데이터를 제외 기억합니다. 그래서, 15 일 자정에 기록 된 모든 데이터가 포함되어 있지만, 15 일 자정 이후 모든 데이터가 아니었다. 자신의 쿼리는 경우,

    select * 
      from table_1 
      where mydate between Datetime('2009-11-13 00:00:00') 
                       and Datetime('2009-11-15 23:59:59')
    

    명확성을 위해 절 사이의 사용합니다.

    그것은 약간 더 좋았을 것이다. 아직 시간은 실제로 60 초 이상을 가질 수있는 계정 윤초를 고려하지 않고, 충분한 여기 토론 :

  8. ==============================

    8.나는 그것의 시간대 정보와 함께 시간을 저장했고, 다음과 같은 형식으로 작업 쿼리를 얻을 수 있었다 :

    나는 그것의 시간대 정보와 함께 시간을 저장했고, 다음과 같은 형식으로 작업 쿼리를 얻을 수 있었다 :

    "SELECT * FROM events WHERE datetime(date_added) BETWEEN 
          datetime('2015-03-06 20:11:00 -04:00') AND datetime('2015-03-06 20:13:00 -04:00')"
    

    시간은 다음과 같은 형식의 일반 텍스트로 데이터베이스에 저장됩니다

    2015-03-06 20:12:15 -04:00
    
  9. ==============================

    9.다음은 날짜를 비교하는 방법하지만 우리는 DB에 저장된 날짜의 형식을 식별해야 그 전에

    다음은 날짜를 비교하는 방법하지만 우리는 DB에 저장된 날짜의 형식을 식별해야 그 전에

    그것은 그 형식에서 비교되어야한다, 그래서 MM 형식 : 나는 / YYYY HH MM / DD에 저장된 날짜가

    나는 현재 시간을 사용했던 모든 계산은, 당신은 당신의 필요에 따라 형식과 날짜를 변경할 수 있습니다.

    이 당신을 도울 것입니다 희망

    Summved

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

    10.당신은 또한 당신이 선택하는 형식으로 핸들 날짜에 자신의 사용자 기능을 작성할 수 있습니다. SQLite는 자신의 사용자 기능을 작성하기위한 아주 간단한 방법이있다. 예를 들어, 나는 몇 함께 지속 시간을 추가 썼다.

    당신은 또한 당신이 선택하는 형식으로 핸들 날짜에 자신의 사용자 기능을 작성할 수 있습니다. SQLite는 자신의 사용자 기능을 작성하기위한 아주 간단한 방법이있다. 예를 들어, 나는 몇 함께 지속 시간을 추가 썼다.

  11. ==============================

    11.다음과 같이 내 쿼리 내가 그랬어 :

    다음과 같이 내 쿼리 내가 그랬어 :

    SELECT COUNT(carSold) 
    FROM cars_sales_tbl
    WHERE date
    BETWEEN '2015-04-01' AND '2015-04-30'
    AND carType = "Hybrid"
    

    나는 ifredy의 대답 @에서 힌트를 얻었다. 모든 내가 그랬어 내가 목표 - C를 사용하여, 아이폰 OS에서 실행되는이 쿼리를 원이다. 그리고 그것은 작동한다!

    아이폰 OS 개발을 수행 희망의 사람도이 답변 밖으로 사용 얻을 것이다!

  12. ==============================

    12.지금은 System.Data.SQlite NuGet 패키지 (버전 1.0.109.2)를 사용하여 개발하고있다. 어떤 SQLite는 버전 3.24.0을 사용.

    지금은 System.Data.SQlite NuGet 패키지 (버전 1.0.109.2)를 사용하여 개발하고있다. 어떤 SQLite는 버전 3.24.0을 사용.

    그리고 이것은 나를 위해 작동합니다.

    SELECT * FROM tables WHERE datetime 
    BETWEEN '2018-10-01 00:00:00' AND '2018-10-10 23:59:59';
    

    나는 날짜 () 함수를 사용하는 그물하지 않습니다. 아마도 그들은 이미 SQLite는 버전의 SQL 쿼리를 업데이트했습니다.

  13. from https://stackoverflow.com/questions/1975737/sqlite-datetime-comparison by cc-by-sa and MIT license