2016-12-09 1 views
0

I 석사 액세스 테이블에 다음 식 있습니다 그러나 12/08/2016 14:23:29 반환,보다 큼/이하 날짜/시간 테이블 식

IIf([End Date/Time]>="12/8/2016 6:00:00",1,0)

12/08/2016 18:15:00가 '1'반환을 '0'

AM/PM에 문제가 있다고 가정합니다. 내 표현에는 '6:00:00 AM'을 넣으려고했으나 아무런 변화가 없었습니다.

또한 '12/8/2016 '을'어제 '로 바꾸고 싶지만 date()-1은 작동하지 않는 것 같습니다.

편집 : 시간이 '06 : 00 : 00 '이어야한다고 생각했습니다. 정확한 날짜가 나온다. 아직 (06:00 즉, 어제) 자동으로 얻을

감사

답변

-1

2 가지 방법을 모른다. 첫째, 문자열을 datetime으로 변환해야한다고 생각합니다. 나는 다른 포맷으로 비교하려고하기 때문에 당신이 우키 한 결과를 얻고 있다고 생각합니다. 문자열이나 숫자와 같습니다. 형식을 사용하는 날짜 형식으로 포맷하려면

Format("12/8/2016 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm") 

둘째, 날짜를 추가하려면 DateAdd 함수가 필요합니다.

DATEADD('d',-1,"12/8/2016 6:00:00AM") 

'd'는 -1이 '추가되는'요일로 정의됩니다. 모두 함께 넣어 그래서

:

DATEADD("d",-1,Format("12/8/2016 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm")) 

그리고 당신이 원한다면 마지막으로, 어제 롤링을 원하는, 그리고 끊임없이 2016년 12월 7일을 (당신이 그냥 날짜를 사용 것이기 때문이었다 경우 경우),이 기능을 오늘 날짜를 얻을 필요가 :

Date() 

그래서, 우리의 믹스에이 던지는 우리가 얻을 :

DATEADD("d",-1,Format(DATE() & " 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm")) 
+0

감사합니다, 그것은 나를 표현에 DATEADD 기능을 사용하지 않습니다 빌더하지만 VBA 에서이 작업을 수행 할 수 있어야합니다 –

+1

당신이 섞여있어. _Format_은 이름에서 알 수있는대로 날짜 값을 형식화합니다. 따라서 항상 날짜 값이 아닌 문자열을 반환합니다.그래서'Format ("12/8/2016 6:00:00 AM", "mm/dd/yyyy hh : nn : ss am/pm")'' "12/8/2016 6:00:00 AM"'is is 먼저 윈도우의 설정을 사용하여 날짜 값에 캐스트하면'Format'은 포맷 된 문자열을 반환합니다. 포맷 된 문자열은'DateAdd'가 처리 할 수있는 날짜 값으로 다시 캐스팅됩니다. 꽤 복잡한. – Gustav

+0

@Gustov 당신 말이 맞아요. 내 대답은 너무 복잡하다고 느꼈지만 효과가 있었으므로 방금 압연했다. 설명 해줘서 고마워. 당신의 대답에 +1. – Chance

2

문제는 문자열을 위협 날짜로 지정하는 것입니다. 항상 날짜을 사용하십시오. 예외는 없습니다.

필드가 날짜 값이 아닌 경우 변환해야합니다. 따라서

,이 작동합니다

IIf(DateValue([End Date/Time]) >= #2016/12/8 6:00:00#, 1, 0) 

이 :

IIf(DateValue([End Date/Time]) >= Date() - 1, 1, 0) 

이 :

IIf(DateValue([End Date/Time]) >= DateAdd("d", -1, #2016/12/8 6:00:00#), 1, 0)