두 개의 다른 데이터베이스 테이블에서 데이터에 액세스 한 다음 C #의 LINQ를 사용하여 두 필드에서 함께 조인하려고합니다. 나는 논리적으로 건전한 전반적인 작업 접근 방식을 가지고 있다고 믿습니다. 내가 겪고있는 문제의 일부는 테이블에 너무 많은 데이터가 있고 충돌을 일으킬 수 있기 때문에 두 테이블을 조인하기 전에 두 테이블의 데이터를 필터링한다는 것입니다.
가장 큰 문제는 테이블 중 하나의 경우 타임 스탬프 (열) 값이 오늘 인 데이터 만 가져와야한다는 것입니다. 타임 스탬프 값은 System.DateTime? 유형입니다.
몇 가지 다른 방법을 시도했습니다.
DateTime? currentDate = System.DateTime.Now;
var second_data = (from b in this.database.table
where EntityFunctions.DiffDays(b.timeStamp.Value, currentDate) == 0
select b);
데이터베이스에 처리 할 기능이 없기 때문에 이것이 작동하지 않는다는 인상을 받았습니다. 내부 예외 : '{ "FUNCTION database.DiffDays does not exist"}'
var second_data = (from b in this.database.table
where b => b.timeStamp.Value.Date == DateTime.Now.Date
select b);
LINQ to Entities에서 '지정된 형식 멤버'Date '가 지원되지 않기 때문에 작동하지 않습니다. 이니셜 라이저, 엔터티 멤버 및 엔터티 탐색 속성 만 지원됩니다. '
var second_data =
this.database.table.Where(sd => sd.timeStamp.Value.Date == DateTime.Now.Date);
그러나 이것은 .Date의 사용 때문에 다시 실패합니다.
불행히도 모든 데이터를 저장할 메모리가 없기 때문에 모든 데이터를 먼저 가져온 다음 날짜 논리를 실행할 가능성은 의문의 여지가 없습니다. 이 문제를 해결할 수있는 방법에 대한 통찰력을 줄 수있는 사람이 있다면 대단히 감사하겠습니다. 감사합니다.
해결 방법
오늘 (또는 특정 날짜 범위)에 대해서만 테이블에서 행을 가져 오려면 간단히 이렇게하면됩니다. 이 접근 방식의 좋은 점은 특정 날짜 또는 날짜 범위의 두 경우 모두에서 작동한다는 것입니다.
// specify date range (without time)
DateTime currentDate = System.DateTime.Now.Date;
DateTime nextDate = currentDate.AddDays(1);
var second_data = from b in this.database.table
where b.timeStamp.Value >= currentDate
and b.timeStamp.Value < nextDate
select b;
참조 페이지 https://stackoverflow.com/questions/21000287
'MySql' 카테고리의 다른 글
MySQL-0이 아닌 MIN 찾기 (0) | 2020.12.14 |
---|---|
MySQL SELECT 쿼리에서 여러 열을 기준으로 정렬하는 방법은 무엇입니까? (0) | 2020.12.14 |
MySQL에서 A로 시작하는 이름을 어떻게 검색합니까? (0) | 2020.12.14 |
MySQL Declaration PHPMyADMIN (0) | 2020.12.14 |
MySQL mysql 5.6 용 mysql-connector-java (0) | 2020.12.14 |
댓글