2012-11-13 2 views
1

나는이 동그라미로 돌아가고 있습니다! 내가하고 있어요 다음PHP에서 MSSQL datetime을 사용하는 데 문제가 있습니다 (SQLSRV를 통해)

  1. 새에 그 날짜를 사용하려고 쿼리 문자열
  2. 를 통해 새로운 PHP 페이지에 날짜를 보내는 SQL/PHP
  3. 를 통해 MSSQL의 날짜 필드에서 날짜를 가져 SQL 쿼리

여기에서 문제가 발생합니다.

내가 에코 사용하는 경우 :

괜찮지 만, 나는 SQL 쿼리에서 사용할 때 내가 기대하는 결과를받지 못했습니다
echo $_REQUEST['rSessionDate']; 
output: 15/10/2012 

, 그래서 내가하는 것입니다 할 수있는 가장 좋은 방법을 생각 먼저 날짜로 인식되는지 확인하십시오. 내가 날짜를 사용하는 경우

echo date('Y-m-d H:i',$_REQUEST['rSessionDate']); 
output: Notice: A non well formed numeric value encountered in ... 

:

echo date_format($_REQUEST['rSessionDate'],'Y-m-d'); 
output: Warning: date_format() expects parameter 1 to be DateTime, string given in ... 

내가 사용하는 경우 한 strtotime() :

echo strtotime($_REQUEST['rSessionDate']); 
output: (nothing) 

내가 사용하는 경우 날짜()

나는 DATE_FORMAT()를 사용하는 경우() with strtotime() :

echo date('Y-m-d H:i',strtotime($_REQUEST['rSessionDate'])); 
output: 1970-01-01 01:00 

나는 아주 간단한 것을 놓치고 있다고 확신합니다.

편집 :

$rSessionDate = new DateTime($_REQUEST['rSessionDate']); 
echo $rSessionDate->format('Y-m-d H:i:s'); 
output: Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (15/10/2012) at position 0 (1): Unexpected character' 

과 : 2

$rSessionDate = date_create($_REQUEST['rSessionDate']); 
echo date_format($rSessionDate, 'Y-m-d H:i:s'); 
output: Warning: date_format() expects parameter 1 to be DateTime, boolean given i 

편집 :

SELECT fCourseCode ,fCourseTitle FROM tCourses WHERE fCourseCode = '4B' AND (ISNULL(fValidStart, 0) <= CAST('2012-10-15 00:00:00' as DATETIME)) 
:

내가 CAST를 사용하여 시도 나는 내가 찾은 몇 가지 새로운 기능을 시도했습니다

하지만 오류로 인해 실패합니다. "varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값이 발생합니다"

답변

1

이렇게하면 원하는 정보를 얻을 수 있습니다.

http://www.ozzu.com/programming-forum/php-mssql-datetime-field-not-pulling-correctly-t106226.html

http://af-design.com/blog/2010/03/13/microsoft-sql-server-driver-for-php-returns-datetime-object/

한 strtotime()는 위의 예에서 획기적인 타임 스탬프를 반환합니다.

또는 CAST를 확인하고 CONVERT는 (MSSQL2000을 의미하지만 여전히 당신에게 도움이 될 수 있습니다) 날짜가 MSSQL 테이블에서 검색 한 경우
http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx

+0

감사합니다. 내가 이해할 수없는 것은 필드가 이미 DATETIME 필드이므로 PHP로 형식을 변경하는 것이 쉽지 않을까요? – valoukh

0

을 당신은 PHP에서 strtotime()를 사용하려면 또한 싶지 않아 날짜 형식을 yyyy-mm-dd로 변경 한 다음

CONVERT(VARCHAR(30), DateFromMSSQL, 121) as DateFromMSSQL 
관련 문제