2016-08-11 2 views
0

MyDate가 오늘이거나 tomarrow 인 DataBase에서 목록을 가져오고 싶습니다.
다음 코드를 작성했습니다.DbFunctions DiffDays 잘못된 대답을 제공합니다.

_Log("Now: " + DateTime.Now.ToString()); 

var v = db_TS.TS_Test.Where(x => DbFunctions.DiffDays(x.MyDate,DateTime.Now) < 2); 
foreach (var item in v.ToList()) 
{ 
    _Log("MyDate: " + item.MyDate.ToString()); 
} 

은 다음이 기록됩니다 이제

: 2016년 11월 8일이 10시 50분 0초
MyDate가이 : 27/09/2017 9시 35분 0초

에 제발 도와주세요 코드에서 무엇이 잘못되었는지 찾으십시오.
감사합니다.

답변

0

가장 간단한 방법은 년, 월, 일을 현재 날짜로 확인하는 것입니다. 월과 연도는 동일해야합니다. 날이 덜 내일을 위해 오늘 하루 동안 동일합니다 :

으로이 단순한 시나리오는 가장자리 경우에 작동하지 않습니다 지적

var v = db_TS.TS_Test.Where(x => x.MyDate.Year == DateTime.Now.Year && 
           x.MyDate.Month == DateTime.Now.Month && 
           x.MyDate.Day >= DateTime.Now.Day - 1); 

편집을.

더 나은 옵션은 오늘 날짜를 뺀 다음 결과를 확인하는 것입니다. 내일이면 1 일 또는 오늘이면 0이됩니다.

+0

나는이 뜻이 생각할 수있는 사용 일 년에 실패하다 와이. –

+0

@AdamV 당신은 절대적으로 옳습니다. 좀 더 강력한 솔루션을 추가했습니다. 누군가가 아이디어를 사용하고 그것을 향상시키고 싶다면 오래된 것을 남겨 둡니다. – PiotrWolkowski

0

자세한 내용은 여기 datediff 기능을 확인하십시오.

  • 구문

    - DATEDIFF (날짜 부분, STARTDATE, ENDDATE)

    - 예

    SELECT DATEDIFF(DAY, GETDATE(), GETDATE() + 1) AS DayDiff 
    SELECT DATEDIFF(MINUTE, GETDATE(), GETDATE() + 1) AS MinuteDiff 
    SELECT DATEDIFF(SECOND, GETDATE(), GETDATE() + 1) AS SecondDiff 
    SELECT DATEDIFF(WEEK, GETDATE(), GETDATE() + 1) AS WeekDiff 
    SELECT DATEDIFF(HOUR, GETDATE(), GETDATE() + 1) AS HourDiff 
    

당신은 play with here