[SQL] SQL 쿼리는 두 날짜 사이의 날짜를 선택합니다
SQLSQL 쿼리는 두 날짜 사이의 날짜를 선택합니다
나는 시작일과 종료일이있다. 나는이 두 날짜 사이의 날짜의 목록을 얻을 싶어요. 캔 사람이 도움이 나를 내 쿼리의 실수를 가리키는.
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
여기 날짜는 날짜 변수입니다.
해결법
-
==============================
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.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.이 시도:
이 시도:
select Date,TotalAllowance from Calculation where EmployeeId=1 and [Date] between '2011/02/25' and '2011/02/27'
날짜 값은 문자열로 입력해야합니다.
그 이후 버전에서 예약어이기 때문에 - 미래를 교정 보장 SQL Server 2008 및 이상에 대한 쿼리를하려면 날짜 탈출해야합니다.
당신이 올바른 값이되지 않을 수도 있음을 유념는 시간없이 날짜, 기본값으로 자정을 것이다.
-
==============================
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.
select * from test where CAST(AddTime as datetime) between '2013/4/4' and '2014/4/4'
- 데이터 유형이 다른 경우
-
==============================
6.이 쿼리는 현재 날짜와 그 다음 3 날짜 사이의 값을 가져 오는 좋은 스탠드
이 쿼리는 현재 날짜와 그 다음 3 날짜 사이의 값을 가져 오는 좋은 스탠드
SELECT * FROM tableName WHERE columName BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
이것은 결국 현재 날짜로 버퍼의 추가 3 일 추가됩니다.
-
==============================
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.
select Date,TotalAllowance from Calculation where EmployeeId=1 and convert(varchar(10),Date,111) between '2011/02/25' and '2011/02/27'
-
==============================
9.# 번호 사이에 날짜를 넣어보십시오 예를 들어 :
# 번호 사이에 날짜를 넣어보십시오 예를 들어 :
#2013/4/4# and #2013/4/20#
그것은 나를 위해 일했습니다.
-
==============================
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.현재 날짜와 다시 삼일 사이의 선택 날짜에 가장 쿼리 :
현재 날짜와 다시 삼일 사이의 선택 날짜에 가장 쿼리 :
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.예를 들면 아래의 확인 : 작업 및 비 작업 모두를.
예를 들면 아래의 확인 : 작업 및 비 작업 모두를.
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.우리는 두 날짜의 데이터를 표시하는 사이에 사용할 수 있지만 그것은 거대한 데이터 느린 우리의 과정을 만들 것입니다 그래서 모두가 DATEDIFF를 사용하는 것이 좋습니다 그래서이 전체 데이터를 검색하고 비교합니다 :
우리는 두 날짜의 데이터를 표시하는 사이에 사용할 수 있지만 그것은 거대한 데이터 느린 우리의 과정을 만들 것입니다 그래서 모두가 DATEDIFF를 사용하는 것이 좋습니다 그래서이 전체 데이터를 검색하고 비교합니다 :
qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
여기 달력 시작 날짜 변수와 테이블, DT이고 DT2는 마감 날짜 변수입니다.
-
==============================
14.나는 날짜 예에 대한 구문 '1 MONTHNAME 2015'를 사용하려면 :
나는 날짜 예에 대한 구문 '1 MONTHNAME 2015'를 사용하려면 :
WHERE aa.AuditDate>='1 September 2015' AND aa.AuditDate<='30 September 2015'
날짜
-
==============================
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.
Select * from Calculation where EmployeeId=1 and Date between #2011/02/25# and #2011/02/27#;
-
==============================
17.이 SQL을 시도 할 수 있습니다
이 SQL을 시도 할 수 있습니다
select * from employee where rec_date between '2017-09-01' and '2017-09-11'
-
==============================
18.정말 모든 SQL 날짜는 가장 정확한 결과를 YYYY-MM-DD 형식이어야합니다.
정말 모든 SQL 날짜는 가장 정확한 결과를 YYYY-MM-DD 형식이어야합니다.
-
==============================
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.더 나은이 방법을 쓸 것 :
더 나은이 방법을 쓸 것 :
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.
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');
from https://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 LIMIT 10 ... 20 (0) | 2020.03.14 |
---|---|
[SQL] 오라클에서 테이블에서 중복 행을 제거 (0) | 2020.03.14 |
[SQL] SQL에서 인덱스는 무엇입니까? (0) | 2020.03.14 |
[SQL] 어떻게 ATTACH로 열린 SQLite 데이터베이스 파일에 테이블을 나열하려면? (0) | 2020.03.13 |
[SQL] 오라클의 모든 테이블의 목록을 가져옵니다? (0) | 2020.03.13 |