이 질문에 계속 대답 The SQL result is inaccurate because of wrong SQL date comparison settingA & B 사이의 날짜를 정확하게 선택하는 방법은 무엇입니까?
excel-VBA에서 ADO를 사용하여 Excel에서 SQL을 실행하면 결과가 Excel 워크 시트에 표시됩니다. "날짜"라는 필드가 워크 시트에 있습니다
2014201520162017
데이터 예 :/2014
1/2/2014,7/1/2014,23/10 이 필드의 데이터 유형은 일/월/년이며 날짜는 = DATE (cell1, cell2, cell3) - 년, 월, 일에 의해 결합됩니다. 나는 1 개 필드 (날짜)
지금, 나는 FROMDATE 및 TODATE 사이의 날짜 범위를 설정할로 3 세포 (년, 월, 일)을 결합으로 테이블의 날짜가 모두 포함 된 두 (순수하게 일을해야한다 여기)
' This SQL select the date between date-VARIABLE: fromdate & toDate
WHERE date >= #" & fromdate & "# AND date<#" & toDate & "#"
전체 SQL은 :
SELECT officer ,NULL, SUM(IIF(isnumeric(mkt) = true and Survey='CPI' and Activity='FI' and Outcome= 'C', Totalmin, 0)/468) , SUM(IIF(isnumeric(Non) = true and Survey='CPI' and Activity='FI' and Outcome= 'C', Totalmin, 0)/468) ,NULL ,NULL , IIF(ISNULL(sum(mkt)),0,sum(mkt)),Sum(Non),sum(ICP),(sum(mkt)+Sum(Non)+sum(ICP)) ,NULL,NULL,NULL,count(IIF(Survey='CPI' and Activity='FI' ,Totalmin, NULL)),NULL,count(IIF( Survey='CPI' and Activity='FI' and (Outcome ='C' OR Outcome='D'OR Outcome='O') , Totalmin, NULL)),NULL,SUM(IIF(Survey='CPI' and Activity='FI' ,Totalmin, 0)),NULL,SUM(IIF(Survey='CPI' and Activity='FI' and (Outcome ='C' OR Outcome='D') ,Totalmin, 0))
From (
select officer ,rank ,year ,month ,day , survey ,activity ,outcome ,mkt,non,totalmin,ICP ,date
from [2014$]
UNION ALL
select officer ,rank ,year ,month ,day , survey ,activity ,outcome ,mkt,non,totalmin,ICP ,date
from [2015$]
UNION ALL
select officer ,rank ,year ,month ,day , survey ,activity ,outcome ,mkt,non,totalmin,ICP ,date
from [2016$]
UNION ALL
select officer ,rank ,year ,month ,day , survey ,activity ,outcome ,mkt,non,totalmin,ICP ,date
from [2017$]
)as table3
where officer is not null and officer <> '' and officer <> ' '
and date >= #" & fromDate & "# AND date<#" & toDate & "#"
group by officer
는 다음 나는 SQL 결과는 동작하지만 결과는 정확하지 않습니다.
나중에 하드 코드로 테스트하려고합니다. 예를 들어 2016 년 3 월에 레코드를 선택하려고합니다.이 where 절을 사용합니다.
where month=3 and year=2016
괜찮습니다.
그런 다음 아래의 구문을 사용하려고했습니다. 그들은 괜찮지 않습니다.
where date between #2016-03-01# and #2016-04-01#
where date >= #2016-03-01# AND date<#2016-04-01#
그런 다음 나는 하나가 엑셀 또는 VBA에서 날짜 데이터 형식 문제가 될 전망이다.
그럼, 아래 이러한 테스트하려고 노력 : Excel 용
를 원래의 데이터 타입은 날짜입니다. 문자열, 숫자, 일반으로 변경합니다. 괜찮습니다.
Date sample: 6/1/2016
String sample: 42375
Numeric sample: 42375.00
VBA의 경우, 나는 하루를 바꿔 보았습니다. -> # 2016년 1월 3일 여전히 # OKAY되지 않음
는자세한 정보는 fromDate
접미사를 들어
에게 0의 시점을 시도 The SQL result is inaccurate because of wrong SQL date comparison setting
및 날짜> = 01/3 월/2016 00 : 00 : 00 # 및 날짜 <# 01/Apr/2016 00 : 00 : 00 # 하드 코드로 테스트하려고했습니다. 결과는 정확하지 않습니다. – Monchhichi