문제

이것이 이미 여러 번 응답되면 사과하지만, 나는 답을 찾을 수 없었고 나는 flummoxed되었습니다.

데이터베이스에서 실행할 때 원하는 결과를 출력하는 MySQL 쿼리가있어 PHP를 통해 쿼리를 실행할 때 올바르게 출력하지 않습니다.

데이터베이스에서 날짜는 다음과 같이 저장됩니다.

2009-08-13T00:00:00

내가하고 싶은 것은 오늘 날짜보다 오래된 데이터를 표시하지 않는 것입니다. 따라서 WHERE 절에서 다음과 같이합니다.

        WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d')

내 의도는 시간 부분을 자정으로 변환하는 방법을 찾기 위해 고군분투하고 있었기 때문에 시간 부분을 벗기는 것입니다.

이것은 phpmyadmin에서 실행할 때 작동하는 것 같습니다. 그러나 PHP 스크립트를 실행하면 그렇지 않습니다.

어떤 아이디어?

많은 감사합니다!

도움이 되었습니까?

해결책

이것은 phpmyadmin에서 실행할 때 작동하는 것 같습니다. 그러나 PHP 스크립트를 실행하면 그렇지 않습니다.

당신은 같은 것을 사용하지 않습니다 sprintf 스트링을 만들려면 당신은? 그렇다면 탈출해야합니다 % 다른 것 %

어쨌든 기능을 사용할 수 있습니다 DATE()

WHERE `dateField1` > DATE(NOW())

다른 팁

닉프가 옳다. 나는 그것에 동의합니다.

SQL 호출을 위해 sprintf () 함수를 사용하는 경우 쿼리를 다음과 같이 전환 할 수 있습니다.

  $query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id);
//Then submit $query for SQL query processing...

php sprintf ()를 사용할 때 %를 유형 지정자로 간주합니다.

이를 피하려면 MySQL 형식 문자열 앞에서 %하나를 추가해야합니다. 즉, %% y 또는 %% m 또는 %% d를 추가해야합니다. MySQL 쿼리에 대한 실제 출력은 %y 또는 %m 또는 %d가됩니다.

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