구글 스프레드시트 쿼리 사용하기 #3 날짜편
날짜버전이 생각보다 까다롭다.
="Select COUNT(B) WHERE (B='"&K2&"' AND C='교배정보' AND E>date '"&TEXT(DATEVALUE("2020-12-31"),"yyyy-mm-dd")&"') LABEL COUNT(B) '당해수정횟수'"
날짜는 date '"&TEXT(DATEVALUE("2020-12-31"),"yyyy-mm-dd")&"' 이러한 형식으로 입력해야 스프레드시트에서 인식할 수 있다.
아~ 이거 기억은 절대 불가할꺼고
메모해둬야겠다.
날짜가 쿼리 기능에 대한 올바른 형식이 아니기 때문에 이러한 "표준" 형식은 모두 작동하지 않습니다.
쿼리 함수의 날짜에 대한 올바른 구문
당 쿼리 언어 문서 , 우리는 포함시킬 필요가 date
키워드와 날짜가 형식에 있는지 확인하십시오 yyyy-mm-dd
우리의 쿼리 기능의 WHERE 절에 필터로 날짜를 사용 할 수 있습니다.
잠시 Query 함수를 제쳐두고 해당 "select..."
문자열을 고려해 보겠습니다 .
우리가 원하는 새 구문은 다음과 같습니다.
date_column > date '2000-01-01'
우리의 과제는 쿼리 함수 내에서 이 구문을 생성하기 위한 텍스트 공식을 생성하는 것입니다.
필요한 날짜인 2000년 1월 1일부터 시작하여 바깥쪽으로 작업하면서 텍스트 함수를 먼저 처리합니다.
먼저 DATEVALUE()
래퍼 를 사용하여 일련 번호 형식으로 변환합니다 .
=DATEVALUE("1/1/2000")
이 공식의 출력은 숫자입니다.
36526
그런 다음 TEXT()
함수는 다음 형식을 지정하여 쿼리 수식에 필요한 형식으로 변환합니다 "yyyy-mm-dd"
.
=TEXT(DATEVALUE("1/1/2000"),"yyyy-mm-dd")
이 수식의 출력은 원하는 형식의 날짜입니다.
2000-01-01
다음으로 "'"
구문을 사용하여 새 날짜 형식 주위에 작은 따옴표를 추가 합니다. 마지막으로 date
쿼리 문자열에 단어 를 삽입하여 다음을 제공합니다.
="select C, B where B > date '"&TEXT(DATEVALUE("1/1/2000"),"yyyy-mm-dd")&"'"
제공하거나 원하는 출력:
select C, B where B > date '2000-01-01'
구문 챌린지가 완료되었습니다!
이제 평소와 같이 Query 함수의 중간 인수에 해당 문자열을 넣을 수 있습니다. 그러면 트릭을 수행할 것입니다.
이 경우 발사 날짜 열이 포함 된 Wikipedia의 우주 왕복선 임무 데이터 테이블을 사용했습니다 .
IMPORTHTML()
함수를 사용하여 해당 테이블을 내 Google 시트로 가져오고 Data in the range 탭으로 가져왔습니다 A1:H136
. 게시물 끝에 이 데이터세트 및 워크시트에 대한 링크가 있습니다.
이 쿼리 공식은 2000년 1월 1일 이후의 모든 우주 왕복선 임무를 반환합니다.
=QUERY(Data!$A$1:$H$136,"select C, B where B > date '"&TEXT(DATEVALUE("1/1/2000"),"yyyy-mm-dd")&"'",1)
이제 수식의 출력이 올바른 필터링된 데이터를 반환합니다.
셀의 날짜 참조
이 경우 수식은 DATEVALUE 함수가 필요하지 않기 때문에 실제로 더 간단합니다. 필터에서 사용하려는 A1 셀에 날짜가 있다고 가정하면 수식은 다음과 같습니다.
=QUERY(Data!$A$1:$H$136,"select C, B where B > date '"&TEXT(A1,"yyyy-mm-dd")&"'",1)
두 날짜 사이의 필터를 보여주는 예
다시 말하지만 AND
키워드 뒤에 두 번째 날짜 절을 추가하여 공식을 확장하는 것은 비교적 간단 합니다.
=QUERY(Data!$A$1:$H$136,"select C, B where B > date '"&TEXT(A1,"yyyy-mm-dd")&"' and B <= date '"&TEXT(B1,"yyyy-mm-dd")&"'",1)
오늘 날짜를 필터로 사용
TODAY() 함수를 공식에 대입합니다.
=QUERY(Data!$A$1:$H$136,"select C, B where B > date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'",1)