문제

MySQL 구문 사용 및 다음과 같은 행이있는 테이블을 사용합니다.

mydate DATETIME NULL,

다음과 같은 작업을 수행하는 방법이 있습니까?

... WHERE mydate<='2008-11-25';

나는 노력하고 있지만 실제로 작동하지는 않습니다.

도움이 되었습니까?

해결책 2

Nevermind는 답을 찾았습니다. 기꺼이 대답하려는 사람에게도 똑같이

WHERE DATEDIFF(mydata,'2008-11-20') >=0;

다른 팁

음, WHERE mydate<='2008-11-25' ~이다 그것을하는 방법. 작동해야합니다.

오류 메시지가 표시 되나요? 고대 버전의 MySQL을 사용하고 있습니까?

편집 : mysql 5.x에서 다음은 나에게 잘 작동합니다.

create temporary table foo(d datetime);
insert into foo(d) VALUES ('2000-01-01');
insert into foo(d) VALUES ('2001-01-01');
select * from foo where d <= '2000-06-01';

표준 SQL 구문에서는 다음을 사용합니다.

WHERE mydate <= DATE '2008-11-20'

즉, 키워드 날짜는 문자열보다 우선해야합니다. 그러나 일부 DBM에서는 그렇게 명백 할 필요가 없습니다. 시스템은 날짜 열을 문자열로 또는 문자열을 날짜 값으로 자동으로 변환합니다. 날짜가 문자열로 변환되면 명목상 몇 가지 흥미로운 의미가 있습니다. 첫 번째 밀레니엄 (0001-01-01 .. 0999-12-31)의 날짜가 발생하면 주요 제로 (ES)는 생략됩니다. 서식 시스템.

시간 구성 요소를 추가 할 수 있습니다

WHERE mydate<='2008-11-25 23:59:59'

그러나 MyDate가 '2008-11-25 24:59:59'인 경우 DST 전환 날짜에서 실패 할 수 있으므로 다음 날짜 이전에 모든 것을 잡는 것이 가장 안전 할 것입니다.

WHERE mydate < '2008-11-26 00:00:00'

문제는 날짜뿐만 아니라 DateTime 데이터를 다루고 있다는 것입니다. 행에 '2008-11-25 09:30 AM'인 MyDate가 있다면 여기서 mydate <= '2008-11-25'; 그 행을 반환하지 않을 것입니다. '2008-11-25'의 암시 적 시간은 00:00 (자정)이므로 날짜 부분이 동일하지만 동일하지 않으며 MyDate가 더 큽니다.

<= '2008-11-25'대신 < '2008-11-26'을 사용하면 작동합니다. Datediffe Method는 날짜 부분 만 비교하고 시간을 무시하기 때문에 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top