복붙노트

[SQL] SQL 쿼리는 두 날짜 사이의 날짜를 선택합니다

SQL

SQL 쿼리는 두 날짜 사이의 날짜를 선택합니다

나는 시작일과 종료일이있다. 나는이 두 날짜 사이의 날짜의 목록을 얻을 싶어요. 캔 사람이 도움이 나를 내 쿼리의 실수를 가리키는.

select Date,TotalAllowance 
from Calculation 
where EmployeeId=1
  and Date between 2011/02/25 and 2011/02/27

여기 날짜는 날짜 변수입니다.

해결법

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

    1.당신과 같은 작은 따옴표 사이에 두 날짜를 넣어해야합니다 ..

    당신과 같은 작은 따옴표 사이에 두 날짜를 넣어해야합니다 ..

    select Date, TotalAllowance from Calculation where EmployeeId = 1
                 and Date between '2011/02/25' and '2011/02/27'
    

    또는 사용할 수 있습니다

    select Date, TotalAllowance from Calculation where EmployeeId = 1
                 and Date >= '2011/02/25' and Date <= '2011/02/27'
    

    명심하면 첫 번째 날짜가 포함이지만, 효과적으로 '2011/02/27 0시 0분 0초'있는 그대로 두 번째는, 배타적이다

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

    2.00 : 지정된 시간 세그먼트가없는 날짜가 날짜 00의 값을 가질 것이기 때문에 당신은 당신이 당신의 범위에서 모든 날짜를 얻을 수 있도록하려면, 00.000을, 당신도 당신의 종료 날짜의 시간을 제공하거나 종료 날짜를 늘려야합니다 와 <사용합니다.

    00 : 지정된 시간 세그먼트가없는 날짜가 날짜 00의 값을 가질 것이기 때문에 당신은 당신이 당신의 범위에서 모든 날짜를 얻을 수 있도록하려면, 00.000을, 당신도 당신의 종료 날짜의 시간을 제공하거나 종료 날짜를 늘려야합니다 와 <사용합니다.

    select Date,TotalAllowance from Calculation where EmployeeId=1 
    and Date between '2011/02/25' and '2011/02/27 23:59:59.999'
    

    또는

    select Date,TotalAllowance from Calculation where EmployeeId=1 
    and Date >= '2011/02/25' and Date < '2011/02/28'
    

    또는

    select Date,TotalAllowance from Calculation where EmployeeId=1 
    and Date >= '2011/02/25' and Date <= '2011/02/27 23:59:59.999'
    

    00 : 00.000 그들의 시간이 00 경우가 2011년 2월 28일에서 일부 레코드를 반환 할 수 있기 때문에, 다음을 사용하지 마십시오.

    select Date,TotalAllowance from Calculation where EmployeeId=1 
    and Date between '2011/02/25' and '2011/02/28'
    
  3. ==============================

    3.이 시도:

    이 시도:

    select Date,TotalAllowance from Calculation where EmployeeId=1
                 and [Date] between '2011/02/25' and '2011/02/27'
    

    날짜 값은 문자열로 입력해야합니다.

    그 이후 버전에서 예약어이기 때문에 - 미래를 교정 보장 SQL Server 2008 및 이상에 대한 쿼리를하려면 날짜 탈출해야합니다.

    당신이 올바른 값이되지 않을 수도 있음을 유념는 시간없이 날짜, 기본값으로 자정을 것이다.

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

    4.

    select * from table_name where col_Date between '2011/02/25' 
    AND DATEADD(s,-1,DATEADD(d,1,'2011/02/27'))
    

    여기서, 먼저 현재 endDate가에 하루를 추가, 그것은 다음 종료 날짜 2011-02-27 23시 59분 59초를 만들기 위해 1 초 빼기, 2011-02-28 00:00:00됩니다. 이렇게하면 주어진 간격 사이의 모든 날짜를 얻을 수 있습니다.

    output:
    2011/02/25
    2011/02/26
    2011/02/27
    
  5. ==============================

    5.

    select * from test 
         where CAST(AddTime as datetime) between '2013/4/4' and '2014/4/4'
    

    - 데이터 유형이 다른 경우

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

    6.이 쿼리는 현재 날짜와 그 다음 3 날짜 사이의 값을 가져 오는 좋은 스탠드

    이 쿼리는 현재 날짜와 그 다음 3 날짜 사이의 값을 가져 오는 좋은 스탠드

    SELECT * FROM tableName  WHERE columName 
    BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
    

    이것은 결국 현재 날짜로 버퍼의 추가 3 일 추가됩니다.

  7. ==============================

    7.이것은 아주 오래된,하지만 난 날짜와 함께 있었 경험을 많이 주어, 당신이 고려하는 것이 좋습니다 : 사람들과 같은, 다른 지역 설정을 사용 (지역 설정에 따라 일부 데이터베이스 / 컴퓨터) 어떤 사람들은 이것을 읽을 수있다 2016년 12월 11일 또는 년 11 월 12 일 2016 년은 더욱, 16/11/12 내부 2016년 11월 12일로 변환됩니다 MySQL 데이터베이스에 공급, Access 데이터베이스가 영국의 국가 별 설정이 컴퓨터에서 실행하는 동안하는 해석하고 같은 날짜 2016년 11월 12일 2012년 11월 16일로 저장합니다.

    이것은 아주 오래된,하지만 난 날짜와 함께 있었 경험을 많이 주어, 당신이 고려하는 것이 좋습니다 : 사람들과 같은, 다른 지역 설정을 사용 (지역 설정에 따라 일부 데이터베이스 / 컴퓨터) 어떤 사람들은 이것을 읽을 수있다 2016년 12월 11일 또는 년 11 월 12 일 2016 년은 더욱, 16/11/12 내부 2016년 11월 12일로 변환됩니다 MySQL 데이터베이스에 공급, Access 데이터베이스가 영국의 국가 별 설정이 컴퓨터에서 실행하는 동안하는 해석하고 같은 날짜 2016년 11월 12일 2012년 11월 16일로 저장합니다.

    따라서, 나는 그것을 내가 날짜 및 데이터베이스와 상호 작용하기 위하여려고 할 때마다 명시 적 내 정책을했다. 난 항상 내 쿼리 및 프로그래밍 코드를 제공 할 수 있도록 다음과 같이 :

    SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
    

    액세스 따라서, #을 받아 들일 것이라는 점을 유의하십시오 :

    SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
    

    난 항상 두 데이터베이스 모두가 동의하는, 위와 같이 " '"를 사용할 수 있도록하지만, MS SQL 서버는하지 않습니다.

    코드에서 변수에서 해당 날짜를 가져올 때 다음과 같이 그리고, 난 항상 문자열로 결과를 변환 :

    "SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
    

    가끔 어떤 프로그래머가 고유의 변환을 감지하는 예리한 충분하지 않을 수 있습니다 알고 있기 때문에 나는 이것을 쓰고있다. 단지 다른 결과 날짜 <13 오류가있을 수 없습니다!

    질문은 질문에 관해서는 다음과 같이 마지막 날짜에 하루 추가하고 비교합니다

    dated >= '11 Nov 2016' AND dated < '15 Nov 2016' 
    
  8. ==============================

    8.

    select Date,TotalAllowance 
    from Calculation 
    where EmployeeId=1
      and convert(varchar(10),Date,111) between '2011/02/25' and '2011/02/27'
    
  9. ==============================

    9.# 번호 사이에 날짜를 넣어보십시오 예를 들어 :

    # 번호 사이에 날짜를 넣어보십시오 예를 들어 :

    #2013/4/4# and #2013/4/20#
    

    그것은 나를 위해 일했습니다.

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

    10.그 날짜 24 시간과 같은 것을 추가해야 밤에 아침과 끝에서 시작하는 경우 :

    그 날짜 24 시간과 같은 것을 추가해야 밤에 아침과 끝에서 시작하는 경우 :

    declare @Approval_date datetime
    set @Approval_date =getdate()
    Approval_date between @Approval_date +' 00:00:00.000' and @Approval_date +' 23:59:59.999'
    
  11. ==============================

    11.현재 날짜와 다시 삼일 사이의 선택 날짜에 가장 쿼리 :

    현재 날짜와 다시 삼일 사이의 선택 날짜에 가장 쿼리 :

      select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN       
    DATE_SUB(CURDATE(), INTERVAL 3 DAY)  AND CURDATE() 
    

    현재 날짜와 앞으로 3 일 사이의 날짜 선택에 가장 쿼리 :

      select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN   
       CURDATE()  AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)   
    
  12. ==============================

    12.예를 들면 아래의 확인 : 작업 및 비 작업 모두를.

    예를 들면 아래의 확인 : 작업 및 비 작업 모두를.

    select * from tblUser Where    
    convert(varchar(10),CreatedDate,111) between '2015/04/01' and '2016/04/01' //--**Working**
    

    또는

    select * from tblUser Where
    (CAST(CreatedDate AS DATETIME) between CAST('2015/04/01' AS DATETIME) And CAST('2016/4/30'AS DATETIME)) //--**Working**
    

    또는

    select * from tblUser Where
    (YEAR(CreatedDate) between YEAR('2015/04/01') And YEAR('2016/4/30')) 
    //--**Working**
    

    아래 작동하지 않습니다 :

    select * from tblUser Where
    Convert(Varchar(10),CreatedDate,111) >=  Convert(Varchar(10),'01-01-2015',111) and  Convert(Varchar(10),CreatedDate,111) <= Convert(Varchar(10),'31-12-2015',111) //--**Not Working**
    
    
    select * from tblUser Where
    (Convert(Varchar(10),CreatedDate,111) between Convert(Varchar(10),'01-01-2015',111) And Convert(Varchar(10),'31-12-2015',111)) //--**Not Working**
    
  13. ==============================

    13.우리는 두 날짜의 데이터를 표시하는 사이에 사용할 수 있지만 그것은 거대한 데이터 느린 우리의 과정을 만들 것입니다 그래서 모두가 DATEDIFF를 사용하는 것이 좋습니다 그래서이 전체 데이터를 검색하고 비교합니다 :

    우리는 두 날짜의 데이터를 표시하는 사이에 사용할 수 있지만 그것은 거대한 데이터 느린 우리의 과정을 만들 것입니다 그래서 모두가 DATEDIFF를 사용하는 것이 좋습니다 그래서이 전체 데이터를 검색하고 비교합니다 :

    qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
    

    여기 달력 시작 날짜 변수와 테이블, DT이고 DT2는 마감 날짜 변수입니다.

  14. ==============================

    14.나는 날짜 예에 대한 구문 '1 MONTHNAME 2015'를 사용하려면 :

    나는 날짜 예에 대한 구문 '1 MONTHNAME 2015'를 사용하려면 :

       WHERE aa.AuditDate>='1 September 2015'
         AND aa.AuditDate<='30 September 2015'
    

    날짜

  15. ==============================

    15.나는 갈 것이다

    나는 갈 것이다

    select Date,TotalAllowance from Calculation where EmployeeId=1
                 and Date >= '2011/02/25' and Date < DATEADD(d, 1, '2011/02/27')
    

    우리가 종료 날짜에 한 단위를 추가 할 수 있도록> = 전체 시작 날짜와 <제외 종료 날짜를 포함 논리의 존재. 이것은 예를 들어 개월 동안 적용 할 수 있습니다 :

    select Date, ... from ...
                 where Date >= $start_month_day_1 and Date < DATEADD(m, 1, $end_month_day_1)
    
  16. ==============================

    16.

    Select 
        * 
    from 
        Calculation 
    where 
        EmployeeId=1 and Date between #2011/02/25# and #2011/02/27#;
    
  17. ==============================

    17.이 SQL을 시도 할 수 있습니다

    이 SQL을 시도 할 수 있습니다

    select * from employee where rec_date between '2017-09-01' and '2017-09-11' 
    
  18. ==============================

    18.정말 모든 SQL 날짜는 가장 정확한 결과를 YYYY-MM-DD 형식이어야합니다.

    정말 모든 SQL 날짜는 가장 정확한 결과를 YYYY-MM-DD 형식이어야합니다.

  19. ==============================

    19.

    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT TOP 10 [Id]
      ,[Id_parvandeh]
      ,[FirstName]
      ,[LastName]
      ,[RegDate]
      ,[Gilder]
      ,[Nationality]
      ,[Educ]
      ,[PhoneNumber]
      ,[DueInMashhad]
    
      ,[EzdevajDate]
    
    
      ,[MarriageStatus]
      ,[Gender]
      ,[Photo]
    
      ,[ModifiedOn]
      ,[CreatorIp]
       From
      [dbo].[Socials] where educ >= 3 or EzdevajDate  >= '1992/03/31' and EzdevajDate <= '2019/03/09' and MarriageStatus = 1
    
  20. ==============================

    20.더 나은이 방법을 쓸 것 :

    더 나은이 방법을 쓸 것 :

    CREATE PROCEDURE dbo.Get_Data_By_Dates
    (
        @EmployeeId INT = 1,
        @Start_Date DATE,
        @End_Date Date
    )
    AS
    Select * FROM Calculation  
        where EmployeeId=@EmployeeId AND Test_Date BETWEEN @Start_Date AND @End_Date
    RETURN
    
  21. ==============================

    21.

    SELECT Date, TotalAllowance  
    FROM Calculation  
    WHERE EmployeeId = 1 
      AND Date BETWEEN to_date('2011/02/25','yyyy-mm-dd') 
                   AND to_date ('2011/02/27','yyyy-mm-dd');
    
  22. from https://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates by cc-by-sa and MIT license