# Filtering a table with datatime on dates

조회 수: 8(최근 30일)
Niels Hawinkel 2021년 7월 28일
답변: Scott MacKenzie 2021년 7월 28일
I have a table(=tmp) with column 2 (=Var2) consisting of Datetimes (Year-Month-Day-HH-MI-S). There are multiple days in this column and I want to filter out 1 day (i.e. 2019-10-01). I have tried the following:
Filter = tmp(tmp.Var2==datetime(2019,10,1,:,:,:),:);
I get the following error:
Unrecognized function or variable 'datetime'.
I have also tried the following:
Filter = tmp(tmp.Var2==datetime(2019,10,1),:);
which results in an empty table.
Anybody knows what to do?

댓글을 달려면 로그인하십시오.

### 채택된 답변

Cris LaPierre 2021년 7월 28일
편집: Cris LaPierre 2021년 7월 28일
In the first case, you are not using correct syntax for MATLAB's datetime function (it doesn't accept colons), so MATLAB is assuming you must have your own function or variable that does, but it can't find it.
In the second case, the == is looking for an exact match (when you don't specify time, midnight is used). None of your datetimes is an exact match.
If you are not looking for an exact match, use conditional statements instead of ==.
rmvDate = tmp.Var2 >= datetime(12019,10,1,0,0,0) & tmp.Var2 < datetime(12019,10,2,0,0,0);
Filter = tmp(rmvDate,:);

댓글을 달려면 로그인하십시오.

### 추가 답변(2개)

Rik 2021년 7월 28일
There is probably a native way to do this, but you could also do it yourself:
ref=datetime(2019,10,1);
L=day(ref)==day(tmp.Var2) & month(ref)==month(tmp.Var2) & year(ref)==year(tmp.Var2);
Filter = tmp(L,:);
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Scott MacKenzie 2021년 7월 28일
To remove rows corresponding to 2019-10-01, this should work:
d = datetime(2019,10,01);
removeLogical = isbetween(tmp.Var2, d, d+1);
tmp(removeLogical,:) = [];

댓글을 달려면 로그인하십시오.

R2020b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by